From 59be080af533f856d0a5b3601368d797173f12b0 Mon Sep 17 00:00:00 2001 From: islamoglus Date: Tue, 14 May 2019 17:30:29 +0300 Subject: [PATCH 1/2] wrong fread usage --- src/apps/relay/mainrelay.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps/relay/mainrelay.c b/src/apps/relay/mainrelay.c index 79e13b9c..ca6e82ec 100644 --- a/src/apps/relay/mainrelay.c +++ b/src/apps/relay/mainrelay.c @@ -1870,7 +1870,7 @@ static int adminmain(int argc, char **argv) } else{ fseek (fptr, 0, SEEK_SET); - if( fread(generated_key, sizeof(char), 16, fptr) !=0 ){ + if( fread(generated_key, sizeof(char), 16, fptr) != 16 ){ TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: ERROR: Secret-Key file is empty\n",__FUNCTION__); } fclose (fptr); @@ -2910,7 +2910,7 @@ static void set_ctx(SSL_CTX** out, const char *protocol, const SSL_METHOD* metho perror("Cannot open Secret-Key file"); } else { fseek (f, 0, SEEK_SET); - if ( fread(turn_params.secret_key, sizeof(char), 16, f) != 0 ){ + if ( fread(turn_params.secret_key, sizeof(char), 16, f) != 16 ){ TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: ERROR: Secret-Key file is empty\n",__FUNCTION__); } fclose (f); From 9e1644055234701564702dfd7f4f187b19053515 Mon Sep 17 00:00:00 2001 From: islamoglus Date: Wed, 15 May 2019 09:51:38 +0300 Subject: [PATCH 2/2] check fread result is 0 or less than expected --- src/apps/relay/mainrelay.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/apps/relay/mainrelay.c b/src/apps/relay/mainrelay.c index ca6e82ec..4243ba89 100644 --- a/src/apps/relay/mainrelay.c +++ b/src/apps/relay/mainrelay.c @@ -1693,6 +1693,7 @@ static void read_config_file(int argc, char **argv, int pass) static int adminmain(int argc, char **argv) { int c = 0; + int rc = 0; TURNADMIN_COMMAND_TYPE ct = TA_COMMAND_UNKNOWN; @@ -1870,9 +1871,15 @@ static int adminmain(int argc, char **argv) } else{ fseek (fptr, 0, SEEK_SET); - if( fread(generated_key, sizeof(char), 16, fptr) != 16 ){ + rc = fread(generated_key, sizeof(char), 16, fptr); + if( rc == 0 ){ TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: ERROR: Secret-Key file is empty\n",__FUNCTION__); } + else{ + if( rc != 16 ){ + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: ERROR: Secret-Key length is not enough\n",__FUNCTION__); + } + } fclose (fptr); } break; @@ -2751,6 +2758,7 @@ static void set_ctx(SSL_CTX** out, const char *protocol, const SSL_METHOD* metho { SSL_CTX* ctx = SSL_CTX_new(method); int err = 0; + int rc = 0; #if ALPN_SUPPORTED SSL_CTX_set_alpn_select_cb(ctx, ServerALPNCallback, NULL); #endif @@ -2910,9 +2918,15 @@ static void set_ctx(SSL_CTX** out, const char *protocol, const SSL_METHOD* metho perror("Cannot open Secret-Key file"); } else { fseek (f, 0, SEEK_SET); - if ( fread(turn_params.secret_key, sizeof(char), 16, f) != 16 ){ + rc = fread(turn_params.secret_key, sizeof(char), 16, f); + if( rc == 0 ){ TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: ERROR: Secret-Key file is empty\n",__FUNCTION__); } + else{ + if( rc != 16 ){ + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: ERROR: Secret-Key length is not enough\n",__FUNCTION__); + } + } fclose (f); } }