diff options
| author | Aymeric Moizard <[email protected]> | 2024-06-19 16:51:23 +0200 |
|---|---|---|
| committer | Aymeric Moizard <[email protected]> | 2024-06-19 16:51:23 +0200 |
| commit | 79d4781780548535a63bb2718034a4ba7d18e8d6 (patch) | |
| tree | 860d34e78ef7f0b8f09663621a8d38a0e760cb65 | |
| parent | 80dc9cc38eb03dacf5b6c15f9cc90a9dbc6f69ac (diff) | |
| download | exosip-master.tar.gz | |
[eXosip_byte_generate_random/no openssl] fix infinite loop when exosip is compiled without opensslHEADmaster
| -rw-r--r-- | src/jrequest.c | 13 |
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 } |
