소스 검색

tls: safety checks for select values

(cherry picked from commit 084364becd2f6f5d6e620721cb0837466c3a2f31)
Daniel-Constantin Mierla 7 년 전
부모
커밋
d86963283c
1개의 변경된 파일10개의 추가작업 그리고 2개의 파일을 삭제
  1. 10 2
      src/modules/tls/tls_select.c

+ 10 - 2
src/modules/tls/tls_select.c

@@ -198,7 +198,11 @@ static int get_cipher(str* res, sip_msg_t* msg)
 		ERR("Cipher name too long\n");
 		ERR("Cipher name too long\n");
 		goto err;
 		goto err;
 	}
 	}
-	memcpy(buf, cipher.s, cipher.len);
+	if(cipher.s!=NULL && cipher.len>0) {
+		memcpy(buf, cipher.s, cipher.len);
+	} else {
+		buf[0] = '\0';
+	}
 	res->s = buf;
 	res->s = buf;
 	res->len = cipher.len;
 	res->len = cipher.len;
 	tcpconn_put(c);
 	tcpconn_put(c);
@@ -298,7 +302,11 @@ static int get_version(str* res, sip_msg_t* msg)
 		ERR("Version string too long\n");
 		ERR("Version string too long\n");
 		goto err;
 		goto err;
 	}
 	}
-	memcpy(buf, version.s, version.len);
+	if(version.s!=NULL && version.len>0) {
+		memcpy(buf, version.s, version.len);
+	} else {
+		buf[0] = '\0';
+	}
 	res->s = buf;
 	res->s = buf;
 	res->len = version.len;
 	res->len = version.len;
 	tcpconn_put(c);
 	tcpconn_put(c);