summaryrefslogtreecommitdiff
diff options
authorAymeric Moizard <[email protected]>2024-06-19 16:51:23 +0200
committerAymeric Moizard <[email protected]>2024-06-19 16:51:23 +0200
commit79d4781780548535a63bb2718034a4ba7d18e8d6 (patch)
tree860d34e78ef7f0b8f09663621a8d38a0e760cb65
parent80dc9cc38eb03dacf5b6c15f9cc90a9dbc6f69ac (diff)
downloadexosip-master.tar.gz
[eXosip_byte_generate_random/no openssl] fix infinite loop when exosip is compiled without opensslHEADmaster
-rw-r--r--src/jrequest.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/jrequest.c b/src/jrequest.c
index 9e3e920..04d85b1 100644
--- a/src/jrequest.c
+++ b/src/jrequest.c
@@ -99,8 +99,17 @@ int eXosip_byte_generate_random(char *buf, int buf_size) {
#ifdef HAVE_OPENSSL_SSL_H
return RAND_bytes((unsigned char *) buf, buf_size) > 0 ? 0 : -1;
#else
- eXosip_generate_random(buf, 16);
- eXosip_hexa_generate_random(buf, buf_size, buf, "key", "crypto");
+ unsigned int random_value;
+ int remaining_bytes = buf_size;
+ char *buf_ptr = buf;
+
+ while (remaining_bytes > 0) {
+ random_value = osip_build_random_number();
+ int copy_size = remaining_bytes < sizeof(random_value) ? remaining_bytes : sizeof(random_value);
+ memcpy(buf_ptr, &random_value, copy_size);
+ buf_ptr += copy_size;
+ remaining_bytes -= copy_size;
+ }
return 0;
#endif
}