fix unchecking NULL codes and other prevent defects 76/43676/1
authorHyunjun Ko <zzoon.ko@samsung.com>
Mon, 13 Jul 2015 07:29:41 +0000 (16:29 +0900)
committerHyunjun Ko <zzoon.ko@samsung.com>
Mon, 13 Jul 2015 07:29:41 +0000 (16:29 +0900)
Change-Id: I3ece239a3515d68128ce8b5faa82fdb4bab21127

examples/test-wfd.c
gst/rtsp-server/gstwfdmessage.c
gst/rtsp-server/rtsp-client-wfd.c
gst/rtsp-server/rtsp-media-factory-wfd.c
gst/rtsp-server/rtsp-server-wfd.c
packaging/gst-rtsp-server.spec

index 3d9782f..26af281 100644 (file)
@@ -103,7 +103,7 @@ int main (int argc, char *argv[])
       "( " VIDEO_PIPELINE " )");
   g_object_ref (factory);
   gst_rtsp_mount_points_add_factory (mounts, TEST_MOUNT_POINT, GST_RTSP_MEDIA_FACTORY(factory));
-  g_object_unref (mounts);
+  if (mounts) g_object_unref (mounts);
 
   /* attach the server to the default maincontext */
   if ((id = gst_rtsp_server_attach (GST_RTSP_SERVER_CAST(server), NULL)) == 0)
index 759216d..3abdfc8 100644 (file)
 #define FREE_STRING(field)              g_free (field); (field) = NULL
 #define REPLACE_STRING(field, val)      FREE_STRING(field); (field) = g_strdup (val)
 
-static void
-free_string (gchar ** str)
-{
-  FREE_STRING (*str);
-}
-
 #define INIT_ARRAY(field, type, init_func)              \
 G_STMT_START {                                          \
   if (field) {                                          \
@@ -675,7 +669,8 @@ gst_wfd_parse_attribute (gchar * buffer, GstWFDMessage * msg)
             msg->uibc_capability->input_category_list.input_cat |=
                 GST_WFD_UIBC_INPUT_CAT_UNKNOWN;
         } while (read_len < rem_len);
-        v = strstr (v, "generic_cap_list");
+
+        if ((v = strstr (v, "generic_cap_list"))) {
         WFD_READ_CHAR_END_STRING (tstring, '=');
         if (!g_strcmp0 (tstring, "generic_cap_list")) {
           gchar temp[8192];
@@ -715,7 +710,9 @@ gst_wfd_parse_attribute (gchar * buffer, GstWFDMessage * msg)
                   GST_WFD_UIBC_INPUT_TYPE_UNKNOWN;
           } while (read_len < rem_len);
         }
-        v = strstr (v, "hidc_cap_list");
+        }
+
+        if ((v = strstr (v, "hidc_cap_list"))) {
         WFD_SKIP_SPACE (v);
         WFD_READ_CHAR_END_STRING (tstring, '=');
         if (!g_strcmp0 (tstring, "hidc_cap_list")) {
@@ -773,14 +770,18 @@ gst_wfd_parse_attribute (gchar * buffer, GstWFDMessage * msg)
             }
           } while (read_len < rem_len);
         }
+        }
+
         if (strstr (v, "port")) {
           v = strstr (v, "port");
-          WFD_READ_CHAR_END_STRING (tstring, '=');
-          if (!g_strcmp0 (tstring, "port")) {
-            WFD_SKIP_EQUAL (v);
-            WFD_READ_CHAR_END_STRING (tstring, ';');
-            if (!strstr (tstring, "none")) {
-              msg->uibc_capability->tcp_port = strtoul (tstring, NULL, 10);
+          if (v) {
+            WFD_READ_CHAR_END_STRING (tstring, '=');
+            if (!g_strcmp0 (tstring, "port")) {
+              WFD_SKIP_EQUAL (v);
+              WFD_READ_CHAR_END_STRING (tstring, ';');
+              if (!strstr (tstring, "none")) {
+                msg->uibc_capability->tcp_port = strtoul (tstring, NULL, 10);
+              }
             }
           }
         }
index 267fcfa..466824e 100644 (file)
@@ -228,10 +228,13 @@ gst_rtsp_wfd_client_init (GstRTSPWFDClient * client)
 {
   GstRTSPWFDClientPrivate *priv = GST_RTSP_WFD_CLIENT_GET_PRIVATE (client);
 
+  g_return_if_fail (priv != NULL);
+
   client->priv = priv;
   priv->protection_enabled = FALSE;
   priv->video_native_resolution = GST_WFD_VIDEO_CEA_RESOLUTION;
   priv->video_resolution_supported = GST_WFD_CEA_640x480P60;
+  priv->keep_alive_flag = FALSE;
   g_mutex_init (&priv->keep_alive_lock);
   GST_INFO_OBJECT (client, "Client is initialized");
 }
@@ -243,6 +246,9 @@ gst_rtsp_wfd_client_finalize (GObject * obj)
   GstRTSPWFDClient *client = GST_RTSP_WFD_CLIENT (obj);
   GstRTSPWFDClientPrivate *priv = GST_RTSP_WFD_CLIENT_GET_PRIVATE (client);
 
+  g_return_if_fail (GST_IS_RTSP_WFD_CLIENT (obj));
+  g_return_if_fail (priv != NULL);
+
   GST_INFO ("finalize client %p", client);
 
   g_mutex_clear (&priv->keep_alive_lock);
@@ -323,6 +329,9 @@ wfd_get_param_request_done (GstRTSPWFDClient * client)
 {
   GstRTSPResult res = GST_RTSP_OK;
   GstRTSPWFDClientPrivate *priv = GST_RTSP_WFD_CLIENT_GET_PRIVATE (client);
+
+  g_return_if_fail (priv != NULL);
+
   priv->m3_done = TRUE;
   GST_INFO_OBJECT (client, "M3 done..");
 
@@ -729,7 +738,9 @@ wfd_get_prefered_resolution (guint64 srcResolution,
           break;
       }
     }
-      break;
+    break;
+
+    default:
       *cMaxWidth = 0;
       *cMaxHeight = 0;
       *cFramerate = 0;
@@ -766,12 +777,19 @@ handle_wfd_response (GstRTSPClient * client, GstRTSPContext * ctx)
   GstRTSPWFDClient *_client = GST_RTSP_WFD_CLIENT (client);
   GstRTSPWFDClientPrivate *priv = GST_RTSP_WFD_CLIENT_GET_PRIVATE (client);
 
+  g_return_if_fail (priv != NULL);
+
   GST_INFO_OBJECT (_client, "Handling response..");
 
-  if (!ctx)
+  if (!ctx) {
     GST_ERROR_OBJECT (_client, "Context is NULL");
-  if (!ctx->response)
+    goto error;
+  }
+
+  if (!ctx->response) {
     GST_ERROR_OBJECT (_client, "Response is NULL");
+    goto error;
+  }
 
   /* parsing the GET_PARAMTER response */
   res = gst_rtsp_message_get_body (ctx->response, (guint8 **) & data, &size);
@@ -1030,9 +1048,11 @@ handle_wfd_set_param_request (GstRTSPClient * client, GstRTSPContext * ctx)
       GST_INFO_OBJECT (_client, "SET_PARAMETER Request : %s(%d)", data, size);
       if (g_strcmp0 ((const gchar *) data, "wfd_idr_request"))
         send_generic_wfd_response (_client, GST_RTSP_STS_OK, ctx);
+#if 0
       else
         /* TODO-WFD : Handle other set param request */
         send_generic_wfd_response (_client, GST_RTSP_STS_OK, ctx);
+#endif
     } else {
       goto bad_request;
     }
@@ -1209,9 +1229,13 @@ _set_wfd_message_body (GstRTSPWFDClient * client, GstWFDMessageType msg_type,
   GString *buf = NULL;
   GstWFDMessage *msg = NULL;
   GstWFDResult wfd_res = GST_WFD_EINVAL;
-  GstRTSPWFDClientPrivate *priv = GST_RTSP_WFD_CLIENT_GET_PRIVATE (client);
+  GstRTSPWFDClientPrivate *priv = NULL;
+  priv = GST_RTSP_WFD_CLIENT_GET_PRIVATE (client);
+
+  g_return_if_fail (priv != NULL);
 
   buf = g_string_new ("");
+  g_return_if_fail (buf != NULL);
 
   if (msg_type == M3_REQ_MSG) {
     /* create M3 request to be sent */
@@ -2079,6 +2103,9 @@ gst_rtsp_wfd_client_set_video_supported_resolution (GstRTSPWFDClient * client,
 {
   GstRTSPResult res = GST_RTSP_OK;
   GstRTSPWFDClientPrivate *priv = GST_RTSP_WFD_CLIENT_GET_PRIVATE (client);
+
+  g_return_val_if_fail (priv != NULL, GST_RTSP_EINVAL);
+
   priv->video_resolution_supported = supported_reso;
   GST_DEBUG ("Resolution : %"G_GUINT64_FORMAT, supported_reso);
 
@@ -2091,6 +2118,9 @@ gst_rtsp_wfd_client_set_video_native_resolution (GstRTSPWFDClient * client,
 {
   GstRTSPResult res = GST_RTSP_OK;
   GstRTSPWFDClientPrivate *priv = GST_RTSP_WFD_CLIENT_GET_PRIVATE (client);
+
+  g_return_val_if_fail (priv != NULL, GST_RTSP_EINVAL);
+
   priv->video_native_resolution = native_reso;
   GST_DEBUG ("Native Resolution : %"G_GUINT64_FORMAT, native_reso);
 
@@ -2101,11 +2131,14 @@ static gboolean
 wfd_ckeck_keep_alive_response (gpointer userdata)
 {
   GstRTSPWFDClient *client = (GstRTSPWFDClient *)userdata;
-  GstRTSPWFDClientPrivate *priv;
+  GstRTSPWFDClientPrivate *priv = NULL;
   if (!client) {
     return FALSE;
   }
+
   priv = GST_RTSP_WFD_CLIENT_GET_PRIVATE (client);
+  g_return_val_if_fail (priv != NULL, GST_RTSP_EINVAL);
+
   if (priv->keep_alive_flag) {
     return FALSE;
   }
@@ -2152,6 +2185,8 @@ keep_alive_condition(gpointer userdata)
   }
   priv = GST_RTSP_WFD_CLIENT_GET_PRIVATE (client);
 
+  g_return_val_if_fail (priv != NULL, FALSE);
+
   g_mutex_lock(&priv->keep_alive_lock);
   if(!priv->keep_alive_flag) {
     g_timeout_add(5000, wfd_ckeck_keep_alive_response, client);
index c0f50f2..1b34961 100644 (file)
@@ -283,8 +283,10 @@ rtsp_media_wfd_dump_data (GstPad * pad, GstPadProbeInfo *info, gpointer u_data)
     size = gst_buffer_get_size (buffer);
 
     f = fopen ("/root/probe.ts", "a");
-    fwrite (data, size, 1, f);
-    fclose (f);
+    if (f != NULL) {
+      fwrite (data, size, 1, f);
+      fclose (f);
+    }
     gst_buffer_unmap (buffer, &mapinfo);
   }
 
index eb56e53..5ab2599 100644 (file)
@@ -118,6 +118,8 @@ gst_rtsp_wfd_server_init (GstRTSPWFDServer * server)
 {
   GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE (server);
 
+  g_return_if_fail (priv != NULL);
+
   server->priv = priv;
   server->priv->native_resolution = 0;
   server->priv->supported_resolution = 1;
@@ -204,6 +206,8 @@ create_client_wfd (GstRTSPServer * server)
   GstRTSPAuth *auth = NULL;
   GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE(server);
 
+  g_return_val_if_fail (priv != NULL, NULL);
+
   GST_INFO_OBJECT (server, "New Client is being created");
 
   /* a new client connected, create a session to handle the client. */
@@ -276,6 +280,7 @@ gst_rtsp_wfd_server_set_supported_reso(GstRTSPWFDServer *server, guint64 support
   GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE(server);
 
   g_return_val_if_fail (GST_IS_RTSP_WFD_SERVER (server), GST_RTSP_ERROR);
+  g_return_val_if_fail (priv != NULL, GST_RTSP_ERROR);
 
   GST_RTSP_WFD_SERVER_LOCK (server);
 
@@ -284,18 +289,37 @@ gst_rtsp_wfd_server_set_supported_reso(GstRTSPWFDServer *server, guint64 support
   GST_RTSP_WFD_SERVER_UNLOCK (server);
   return res;
 }
+
 GstRTSPResult
 gst_rtsp_wfd_server_set_video_native_reso (GstRTSPWFDServer *server, guint64 native_reso)
 {
-         GstRTSPResult res = GST_RTSP_OK;
-         GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE(server);
+  GstRTSPResult res = GST_RTSP_OK;
+  GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE(server);
+
+  g_return_val_if_fail (GST_IS_RTSP_WFD_SERVER (server), GST_RTSP_ERROR);
+  g_return_val_if_fail (priv != NULL, GST_RTSP_ERROR);
 
-         g_return_val_if_fail (GST_IS_RTSP_WFD_SERVER (server), GST_RTSP_ERROR);
+  GST_RTSP_WFD_SERVER_LOCK (server);
 
-         GST_RTSP_WFD_SERVER_LOCK (server);
+  priv->native_resolution = native_reso;
 
-         priv->native_resolution = native_reso;
+  GST_RTSP_WFD_SERVER_UNLOCK (server);
+  return res;
+}
 
-         GST_RTSP_WFD_SERVER_UNLOCK (server);
-         return res;
+GstRTSPResult
+gst_rtsp_wfd_server_set_audio_codec (GstRTSPWFDServer *server, guint8 audio_codec)
+{
+  GstRTSPResult res = GST_RTSP_OK;
+  GstRTSPWFDServerPrivate *priv = GST_RTSP_WFD_SERVER_GET_PRIVATE(server);
+
+  g_return_val_if_fail (GST_IS_RTSP_WFD_SERVER (server), GST_RTSP_ERROR);
+  g_return_val_if_fail (priv != NULL, GST_RTSP_ERROR);
+
+  GST_RTSP_WFD_SERVER_LOCK (server);
+
+  priv->audio_codec = audio_codec;
+
+  GST_RTSP_WFD_SERVER_UNLOCK (server);
+  return res;
 }
index 30832e8..630bb5a 100644 (file)
@@ -1,7 +1,7 @@
 Name:       gst-rtsp-server
 Summary:    Multimedia Framework Library
 Version:    1.4.5
-Release:    0
+Release:    1
 Group:      System/Libraries
 License:    LGPLv2+
 Source0:    %{name}-%{version}.tar.gz