[Svace] check null ptr
authorJaeyun <jy1210.jung@samsung.com>
Fri, 6 May 2022 07:24:00 +0000 (16:24 +0900)
committerjaeyun-jung <39614140+jaeyun-jung@users.noreply.github.com>
Mon, 9 May 2022 04:40:16 +0000 (13:40 +0900)
Fix svace issue, check null ptr - allocation failure case in log util.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
gst/nnstreamer/nnstreamer_log.c
gst/nnstreamer/nnstreamer_log.h

index 436fcba..32d597e 100644 (file)
@@ -33,7 +33,7 @@ _backtrace_to_string (void)
 /* Android does not have execinfo.h. It has unwind.h instead. */
   void *array[20];
   char **strings;
-  int size, i;
+  int size, i, len;
   int strsize = 0, strcursor = 0;
 
   size = backtrace (array, 20);
@@ -43,15 +43,18 @@ _backtrace_to_string (void)
       strsize += strlen (strings[i]);
 
     retstr = malloc (sizeof (char) * (strsize + 1));
-    for (i = 0; i < size; i++) {
-      int len = strlen (strings[i]);
-      memcpy (retstr + strcursor, strings[i], len);
-      strcursor += len;
+    if (retstr) {
+      for (i = 0; i < size; i++) {
+        len = strlen (strings[i]);
+        memcpy (retstr + strcursor, strings[i], len);
+        strcursor += len;
+      }
+
+      retstr[strsize] = '\0';
     }
-    retstr[strsize] = '\0';
-  }
 
-  free (strings);
+    free (strings);
+  }
 #else
   retstr = strdup ("Android-nnstreamer does not support backtrace.\n");
 #endif
index 3825a99..8d1466f 100644 (file)
@@ -93,21 +93,27 @@ _backtrace_to_string (void);
 
 #define GST_ELEMENT_ERROR_BTRACE(s, errtype, errcode, mesg) do { \
       char *btrace = _backtrace_to_string (); \
-      GST_ELEMENT_ERROR (s, errtype, errcode, mesg, ("%s", btrace)); \
-      free (btrace); \
+      if (btrace) { \
+        GST_ELEMENT_ERROR (s, errtype, errcode, mesg, ("%s", btrace)); \
+        free (btrace); \
+      } \
     } while (0)
 
 #define ml_logf_stacktrace(...) do { \
       char *btrace = _backtrace_to_string (); \
-      ml_loge ("%s\n", btrace);  \
-      free (btrace); \
+      if (btrace) { \
+        ml_loge ("%s\n", btrace);  \
+        free (btrace); \
+      } \
       ml_logf (__VA_ARGS__); \
     } while (0)
 
 #define ml_log_stacktrace(logfunc, ...) do { \
       char *btrace = _backtrace_to_string (); \
-      logfunc ("%s\n", btrace);  \
-      free (btrace); \
+      if (btrace) { \
+        logfunc ("%s\n", btrace);  \
+        free (btrace); \
+      } \
       logfunc (__VA_ARGS__); \
     } while (0)
 #define ml_loge_stacktrace(...) ml_log_stacktrace(ml_loge, __VA_ARGS__)