diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 82f1934..64475a3 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -1456,10 +1456,12 @@
     int result;
     char value[PROPERTY_VALUE_MAX];
     cvd_version = calloc(1, MAX_CVD_VERSION_STRING_SIZE);
-    if (!cvd_version)
+    if (!cvd_version) {
         ALOGE("Failed to allocate cvd version");
-    else
+        return -1;
+    } else {
         get_cvd_version(cvd_version, my_data->adev);
+    }
 
     property_get("audio.ds1.metainfo.key",value,"0");
     key = atoi(value);
@@ -2339,7 +2341,7 @@
     struct listnode *node;
     int mode = NATIVE_AUDIO_MODE_INVALID;
 
-    if (!value)
+    if (!value || !parms)
         return ret;
 
     ret = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_NATIVE_AUDIO_MODE,
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 759f889..b98cc73 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1108,14 +1108,14 @@
 
              if(property_get_bool("use.qti.sw.alac.decoder", false)) {
                  ALOGD("Alac software decoder is available...removing alac from DSP decoder list");
-                 strncpy(dsp_only_decoders_mime[count],"none",5);
+                 strlcpy(dsp_only_decoders_mime[count],"none",5);
              }
          } else if (!strncmp(MEDIA_MIMETYPE_AUDIO_APE, dsp_only_decoders_mime[count],
               strlen(dsp_only_decoders_mime[count]))) {
 
              if(property_get_bool("use.qti.sw.ape.decoder", false)) {
                  ALOGD("APE software decoder is available...removing ape from DSP decoder list");
-                 strncpy(dsp_only_decoders_mime[count],"none",5);
+                 strlcpy(dsp_only_decoders_mime[count],"none",5);
              }
          }
      }
@@ -1304,10 +1304,12 @@
     int result;
     char value[PROPERTY_VALUE_MAX];
     cvd_version = calloc(1, MAX_CVD_VERSION_STRING_SIZE);
-    if (!cvd_version)
+    if (!cvd_version) {
         ALOGE("Failed to allocate cvd version");
-    else
+        return -1;
+    } else {
         get_cvd_version(cvd_version, my_data->adev);
+    }
 
     property_get("audio.ds1.metainfo.key",value,"0");
     key = atoi(value);
@@ -2122,11 +2124,14 @@
 int native_audio_set_params(struct platform_data *platform,
                             struct str_parms *parms, char *value, int len)
 {
-    int ret = 0;
+    int ret = -1;
     struct audio_usecase *usecase;
     struct listnode *node;
     int mode = NATIVE_AUDIO_MODE_INVALID;
 
+    if (!value || !parms)
+        return ret;
+
     ret = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_NATIVE_AUDIO_MODE,
                              value, len);
     if (ret >= 0) {
