@@ -2009,9 +2009,14 @@ SARA_R5_error_t SARA_R5::socketClose(int socket, int timeout)
20092009 char *response;
20102010
20112011 command = sara_r5_calloc_char (strlen (SARA_R5_CLOSE_SOCKET) + 10 );
2012- response = sara_r5_calloc_char (128 );
20132012 if (command == NULL )
20142013 return SARA_R5_ERROR_OUT_OF_MEMORY;
2014+ response = sara_r5_calloc_char (128 );
2015+ if (response == NULL )
2016+ {
2017+ free (command);
2018+ return SARA_R5_ERROR_OUT_OF_MEMORY;
2019+ }
20152020 sprintf (command, " %s=%d" , SARA_R5_CLOSE_SOCKET, socket);
20162021
20172022 err = sendCommandWithResponse (command, SARA_R5_RESPONSE_OK, response, timeout);
@@ -2053,10 +2058,15 @@ SARA_R5_error_t SARA_R5::socketWrite(int socket, const char *str)
20532058 SARA_R5_error_t err;
20542059 unsigned long writeDelay;
20552060
2056- response = sara_r5_calloc_char (128 );
20572061 command = sara_r5_calloc_char (strlen (SARA_R5_WRITE_SOCKET) + 8 );
20582062 if (command == NULL )
20592063 return SARA_R5_ERROR_OUT_OF_MEMORY;
2064+ response = sara_r5_calloc_char (128 );
2065+ if (response == NULL )
2066+ {
2067+ free (command);
2068+ return SARA_R5_ERROR_OUT_OF_MEMORY;
2069+ }
20602070 sprintf (command, " %s=%d,%d" , SARA_R5_WRITE_SOCKET, socket, strlen (str));
20612071
20622072 err = sendCommandWithResponse (command, " @" , response,
@@ -2098,8 +2108,15 @@ SARA_R5_error_t SARA_R5::socketWriteUDP(int socket, const char *address, int por
20982108 SARA_R5_error_t err;
20992109 int dataLen = len == -1 ? strlen (str) : len;
21002110
2101- response = sara_r5_calloc_char (128 );
21022111 command = sara_r5_calloc_char (64 );
2112+ if (command == NULL )
2113+ return SARA_R5_ERROR_OUT_OF_MEMORY;
2114+ response = sara_r5_calloc_char (128 );
2115+ if (response == NULL )
2116+ {
2117+ free (command);
2118+ return SARA_R5_ERROR_OUT_OF_MEMORY;
2119+ }
21032120
21042121 sprintf (command, " %s=%d,\" %s\" ,%d,%d" , SARA_R5_WRITE_UDP_SOCKET,
21052122 socket, address, port, dataLen);
@@ -2260,7 +2277,15 @@ int SARA_R5::socketGetLastError()
22602277 int errorCode = -1 ;
22612278
22622279 command=sara_r5_calloc_char (64 );
2263- response=sara_r5_calloc_char (128 );
2280+ if (command == NULL )
2281+ return SARA_R5_ERROR_OUT_OF_MEMORY;
2282+
2283+ response=sara_r5_calloc_char (128 );
2284+ if (response == NULL )
2285+ {
2286+ free (command);
2287+ return SARA_R5_ERROR_OUT_OF_MEMORY;
2288+ }
22642289
22652290 sprintf (command, " %s" , SARA_R5_GET_ERROR);
22662291
@@ -3399,6 +3424,7 @@ SARA_R5_error_t SARA_R5::parseSocketReadIndicationUDP(int socket, int length)
33993424 err = socketReadUDP (socket, length, readDest);
34003425 if (err != SARA_R5_ERROR_SUCCESS)
34013426 {
3427+ free (readDest);
34023428 return err;
34033429 }
34043430
0 commit comments