PRSDK-4807 Fix Klocwork issue
authorSinthu Raja M <x0257345@ti.com>
Thu, 17 Jan 2019 11:53:29 +0000 (17:23 +0530)
committerSinthu Raja M <x0257345@ti.com>
Thu, 17 Jan 2019 11:53:29 +0000 (17:23 +0530)
 Issue: Pointer variables initialized as NULL is used for memcpy and
 other  functions which can possible result in dereferencing NULL pointer.

 Fix: Added condition to check the Variables are not NULL before it is
 been used by other functions.

common/components/mss/src/mssproc.c

index 87ce6ff2e8a5998d40911659a3092b74de6c527d..88300c86ab86505ff74322914fb540c24033f7bd 100644 (file)
@@ -343,7 +343,7 @@ void mss_src_output(mssInst_t *inst, void *out, void *mic_fix[],
   }\r
 \r
   /* Check if in the middle of a switch. */\r
-  if(!mss_chkbit(inst->state_bf, MSS_STATE_BIT_SWITCH_SRC)) {\r
+  if(!mss_chkbit(inst->state_bf, MSS_STATE_BIT_SWITCH_SRC) && cur_sel_src != NULL) {\r
     /* If it is not during a switch, copy the current selected source to output \r
        without any modification. */\r
     memcpy(out, cur_sel_src, inst->frame_size*sizeof(linSample));\r
@@ -369,17 +369,24 @@ void mss_src_output(mssInst_t *inst, void *out, void *mic_fix[],
     phase_inc = inst->crossfade_phase_inc;\r
     output = (linSample *)out;\r
 \r
-    for(i=0; i<inst->frame_size; i++) {\r
-//      alpha = (1-utlSin(phase>>16)) / 2; /* to use macros */\r
-      sin_phase = utlSin(phase>>16);   /* Q.31 to Q.15 */\r
-      fade_out_alpha = MSS_SIN_PIOVER2/2 - sin_phase/2; /* (1-sin(pha))/2 in Q.14 */\r
-      fade_in_alpha  = MSS_SIN_PIOVER2/2 + sin_phase/2; /* (1+sin(pha))/2 in Q.14 */\r
-      fade_out_alpha = mss_MIN(16383, fade_out_alpha);\r
-      fade_in_alpha  = mss_MIN(16383, fade_in_alpha);\r
-      output[i] = frctMul(cur_sel_src[i], 0, fade_out_alpha, 14, 0) \r
+    if(cur_sel_src != NULL && new_sel_src != NULL)\r
+    {\r
+        for(i=0; i<inst->frame_size; i++) {\r
+//          alpha = (1-utlSin(phase>>16)) / 2; /* to use macros */\r
+            sin_phase = utlSin(phase>>16);   /* Q.31 to Q.15 */\r
+            fade_out_alpha = MSS_SIN_PIOVER2/2 - sin_phase/2; /* (1-sin(pha))/2 in Q.14 */\r
+            fade_in_alpha  = MSS_SIN_PIOVER2/2 + sin_phase/2; /* (1+sin(pha))/2 in Q.14 */\r
+            fade_out_alpha = mss_MIN(16383, fade_out_alpha);\r
+            fade_in_alpha  = mss_MIN(16383, fade_in_alpha);\r
+            output[i] = frctMul(cur_sel_src[i], 0, fade_out_alpha, 14, 0) \r
                  +frctMul(new_sel_src[i], 0, fade_in_alpha,  14, 0);\r
-      phase += phase_inc;\r
+            phase += phase_inc;\r
+        }\r
+    }\r
+    else {\r
+      /* error message */\r
     }\r
+\r
     inst->crossfade_phase = phase;\r
 \r
     /* for debugging only */\r