Просмотр исходного кода

uac: test if qop field has a list of values for remote auth challenge

- GH #1684
Daniel-Constantin Mierla 6 лет назад
Родитель
Сommit
6e6a2f442e
1 измененных файлов с 7 добавлено и 1 удалено
  1. 7 1
      src/modules/uac/auth_alg.c

+ 7 - 1
src/modules/uac/auth_alg.c

@@ -135,6 +135,7 @@ void uac_calc_response( HASHHEX ha1, HASHHEX ha2,
 {
 	MD5_CTX Md5Ctx;
 	HASH RespHash;
+	char *p;
 
 	MD5Init(&Md5Ctx);
 	MD5Update(&Md5Ctx, ha1, HASHHEXLEN);
@@ -148,7 +149,12 @@ void uac_calc_response( HASHHEX ha1, HASHHEX ha2,
 		MD5Update(&Md5Ctx, ":", 1);
 		MD5Update(&Md5Ctx, cnonce->s, cnonce->len);
 		MD5Update(&Md5Ctx, ":", 1);
-		MD5Update(&Md5Ctx, auth->qop.s, auth->qop.len);
+		p = memchr(auth->qop.s, ',', auth->qop.len);
+		if(p) {
+			MD5Update(&Md5Ctx, auth->qop.s, (size_t)(p - auth->qop.s));
+		} else {
+			MD5Update(&Md5Ctx, auth->qop.s, auth->qop.len);
+		}
 		MD5Update(&Md5Ctx, ":", 1);
 	};
 	MD5Update(&Md5Ctx, ha2, HASHHEXLEN);