fix bug in svace 51/92051/1
authorjomui <jongmun.woo@samsung.com>
Thu, 13 Oct 2016 05:14:37 +0000 (14:14 +0900)
committerjomui <jongmun.woo@samsung.com>
Thu, 13 Oct 2016 05:15:00 +0000 (14:15 +0900)
Signed-off-by: jomui <jongmun.woo@samsung.com>
Change-Id: I843eeca265f3387ccc749480cca11f6ccc86f408

src/mapzen/mapzen_jsonparser.cpp
src/mapzen/mapzen_queue.c
src/mapzen/tangram_view.cpp
src/mapzen_plugin.c

index d0cd2c81b8c67142bec29c76679497a4540c796d..f57c916d0d8eef6566eae7b31f30a762d0f3ea5a 100644 (file)
@@ -293,6 +293,8 @@ static void __parse_place_response(char *response, int size, GList **placeList)
                                if(properties != f->MemberEnd()) {
                                        //fill this out as we go
                                        mapzen_place_resp_s *respPlaces = (mapzen_place_resp_s *)g_malloc0(sizeof(mapzen_place_resp_s));
+                                       if (!respPlaces)
+                                               return;
 
                                        respPlaces->place_id = NULL;
                                        respPlaces->categories = NULL;
@@ -351,13 +353,15 @@ static void __process_shape(std::vector<coords_s>& decoded_shape, GList **shapeP
 
        for (auto& shape_pt : decoded_shape) {
                coords_s *coords = (coords_s *)g_malloc0(sizeof(coords_s));
-               coords->latitude = shape_pt.latitude;
-               coords->longitude = shape_pt.longitude;
-               if ((*shapePoints) == NULL)
-                       (*shapePoints) = g_list_append((*shapePoints), (gpointer)coords);
-               else
-                       (*shapePoints) = g_list_insert_before((*shapePoints), NULL, (gpointer)coords);
-//             MAP_DEBUG(">>>>> PROCESS __process_shape: lat,lon=%f,%f", coords->latitude, coords->longitude);
+               if (coords) {
+                       coords->latitude = shape_pt.latitude;
+                       coords->longitude = shape_pt.longitude;
+                       if ((*shapePoints) == NULL)
+                               (*shapePoints) = g_list_append((*shapePoints), (gpointer)coords);
+                       else
+                               (*shapePoints) = g_list_insert_before((*shapePoints), NULL, (gpointer)coords);
+       //              MAP_DEBUG(">>>>> PROCESS __process_shape: lat,lon=%f,%f", coords->latitude, coords->longitude);
+               }
        }
        MAP_DEBUG(">>>>> END __process_shape");
 }
@@ -447,7 +451,7 @@ static void __parse_maneuvers(rapidjson::Value::ConstMemberIterator maneuvers, m
                                MAP_DEBUG(">>>>> PROCESS __parse_maneuvers: street_name=%s", street_name.c_str());
                                maneuver_resp->street_name = (gchar *)g_malloc0(street_name.size() + 1);
                                if (maneuver_resp->street_name) {
-                                       strcpy(maneuver_resp->street_name, street_name.c_str());
+                                       strncpy (maneuver_resp->street_name, street_name.c_str(), sizeof (maneuver_resp->street_name));
                                        MAP_DEBUG(">>>>> PROCESS __parse_maneuvers: maneuver_resp->street_name=%s", maneuver_resp->street_name);
                                }
                        }
index 97866fd384d8aa0933273786aaf33b21b94295ea..38c9b31fa62b3b4777b726bc63708e2685b956ce 100644 (file)
@@ -1642,6 +1642,9 @@ int start_geocode_service(mapzen_geocode_req_s *req_details, mapzen_geocode_cb c
                /* Add the request to queue */
                add_to_geocode_list(req_details, callback, request_id, user_data);
        } else {
+               if (!req_details)
+                       return MAPZEN_ERROR_INVALID_PARAMETER;
+
                MapzenGeocodeQueryData *queryData = (MapzenGeocodeQueryData *)g_malloc0(sizeof(MapzenGeocodeQueryData));
 
                if (queryData != NULL) {
@@ -1673,22 +1676,20 @@ int start_geocode_service(mapzen_geocode_req_s *req_details, mapzen_geocode_cb c
                        }
                }
 
-               if (req_details) {
-                       if (req_details->address) {
-                               g_free(req_details->address);
-                               req_details->address = NULL;
-                       }
-                       if (req_details->maps_key) {
-                               g_free(req_details->maps_key);
-                               req_details->maps_key = NULL;
-                       }
-                       if (req_details->boundary) {
-                               g_free(req_details->boundary);
-                               req_details->boundary = NULL;
-                       }
-                       g_free(req_details);
-                       req_details = NULL;
+               if (req_details->address) {
+                       g_free(req_details->address);
+                       req_details->address = NULL;
+               }
+               if (req_details->maps_key) {
+                       g_free(req_details->maps_key);
+                       req_details->maps_key = NULL;
                }
+               if (req_details->boundary) {
+                       g_free(req_details->boundary);
+                       req_details->boundary = NULL;
+               }
+               g_free(req_details);
+               req_details = NULL;
        }
 
        return MAPZEN_ERROR_NONE;
@@ -1702,6 +1703,9 @@ int start_reversegeocode_service(mapzen_revgeocode_req_s *req_details, mapzen_re
                /* Add the request to queue */
                add_to_revgeocode_list(req_details, callback, request_id, user_data);
        } else {
+               if (!req_details)
+                       return MAPZEN_ERROR_INVALID_PARAMETER;
+
                MapzenRevGeocodeQueryData *queryData = (MapzenRevGeocodeQueryData *)g_malloc0(sizeof(MapzenRevGeocodeQueryData));
 
                if (queryData != NULL) {
@@ -1714,14 +1718,12 @@ int start_reversegeocode_service(mapzen_revgeocode_req_s *req_details, mapzen_re
                        query_revgeocode(req_details->maps_key, coords.latitude, coords.longitude, queryData);
                }
 
-               if (req_details) {
-                       if (req_details->maps_key) {
-                               g_free(req_details->maps_key);
-                               req_details->maps_key = NULL;
-                       }
-                       g_free(req_details);
-                       req_details = NULL;
+               if (req_details->maps_key) {
+                       g_free(req_details->maps_key);
+                       req_details->maps_key = NULL;
                }
+               g_free(req_details);
+               req_details = NULL;
        }
 
        return MAPZEN_ERROR_NONE;
@@ -1735,6 +1737,9 @@ int start_route_service(mapzen_route_req_s *req_details, mapzen_route_cb callbac
                /* Add the request to queue */
                add_to_route_list(req_details, callback, request_id, user_data);
        } else {
+               if (!req_details)
+                       return MAPZEN_ERROR_INVALID_PARAMETER;
+
                MapzenRouteQueryData *queryData = (MapzenRouteQueryData *)g_malloc0(sizeof(MapzenRouteQueryData));
 
                if (queryData != NULL) {
@@ -1749,32 +1754,30 @@ int start_route_service(mapzen_route_req_s *req_details, mapzen_route_cb callbac
                        query_route(req_details->maps_key, req_details->from, req_details->to, req_details->type, req_details->avoids, req_details->driving_style, req_details->way_points, queryData);
                }
 
-               if (req_details) {
-                       if (req_details->maps_key) {
-                               g_free(req_details->maps_key);
-                               req_details->maps_key = NULL;
-                       }
-                       if (req_details->way_points) {
-                               if (g_list_length(req_details->way_points) > 0) {
-                                       GList *list = NULL;
-                                       list = g_list_first(req_details->way_points);
-                                       while (list) {
-                                               coords_s *data = (coords_s *)list->data;
-                                               if (data) {
-                                                       req_details->way_points = g_list_remove(req_details->way_points, (gpointer)data);
-
-                                                       g_free(data);
-                                                       data = NULL;
-                                               }
-                                               list = g_list_first(req_details->way_points);
+               if (req_details->maps_key) {
+                       g_free(req_details->maps_key);
+                       req_details->maps_key = NULL;
+               }
+               if (req_details->way_points) {
+                       if (g_list_length(req_details->way_points) > 0) {
+                               GList *list = NULL;
+                               list = g_list_first(req_details->way_points);
+                               while (list) {
+                                       coords_s *data = (coords_s *)list->data;
+                                       if (data) {
+                                               req_details->way_points = g_list_remove(req_details->way_points, (gpointer)data);
+
+                                               g_free(data);
+                                               data = NULL;
                                        }
+                                       list = g_list_first(req_details->way_points);
                                }
-                               g_list_free(req_details->way_points);
-                               req_details->way_points = NULL;
                        }
-                       g_free(req_details);
-                       req_details = NULL;
+                       g_list_free(req_details->way_points);
+                       req_details->way_points = NULL;
                }
+               g_free(req_details);
+               req_details = NULL;
        }
 
        return MAPZEN_ERROR_NONE;
@@ -1790,6 +1793,9 @@ int start_place_service(mapzen_search_req_s *req_details, mapzen_place_search_cb
                /* Add the request to queue */
                add_to_place_list(req_details, callback, request_id, user_data);
        } else {
+               if (!req_details)
+                       return MAPZEN_ERROR_INVALID_PARAMETER;
+
                MapzenPlaceQueryData *queryData = (MapzenPlaceQueryData *)g_malloc0(sizeof(MapzenPlaceQueryData));
 
                if (queryData != NULL) {
@@ -1800,26 +1806,24 @@ int start_place_service(mapzen_search_req_s *req_details, mapzen_place_search_cb
                        query_places(req_details->maps_key, req_details->search_string, req_details->categories, req_details->boundary, req_details->num_res, queryData, REQ_TYPE_PLACES);
                }
 
-               if (req_details) {
-                       if (req_details->maps_key) {
-                               g_free(req_details->maps_key);
-                               req_details->maps_key = NULL;
-                       }
-                       if (req_details->boundary) {
-                               g_free(req_details->boundary);
-                               req_details->boundary = NULL;
-                       }
-                       if (req_details->search_string) {
-                               g_free(req_details->search_string);
-                               req_details->search_string = NULL;
-                       }
-                       if (req_details->categories) {
-                               g_free(req_details->categories);
-                               req_details->categories = NULL;
-                       }
-                       g_free(req_details);
-                       req_details = NULL;
+               if (req_details->maps_key) {
+                       g_free(req_details->maps_key);
+                       req_details->maps_key = NULL;
+               }
+               if (req_details->boundary) {
+                       g_free(req_details->boundary);
+                       req_details->boundary = NULL;
+               }
+               if (req_details->search_string) {
+                       g_free(req_details->search_string);
+                       req_details->search_string = NULL;
+               }
+               if (req_details->categories) {
+                       g_free(req_details->categories);
+                       req_details->categories = NULL;
                }
+               g_free(req_details);
+               req_details = NULL;
        }
 
        return MAPZEN_ERROR_NONE;
@@ -1835,6 +1839,9 @@ int start_place_details_service(mapzen_get_details_req_s *req_details, mapzen_ge
                /* Add the request to queue */
                add_to_place_details_list(req_details, callback, request_id, user_data);
        } else {
+               if (!req_details)
+                       return MAPZEN_ERROR_INVALID_PARAMETER;
+
                MapzenPlaceDetailsQueryData *queryData = (MapzenPlaceDetailsQueryData *)g_malloc0(sizeof(MapzenPlaceDetailsQueryData));
 
                if (queryData != NULL) {
@@ -1845,18 +1852,16 @@ int start_place_details_service(mapzen_get_details_req_s *req_details, mapzen_ge
                        query_place_details(req_details->maps_key, req_details->uri, queryData);
                }
 
-               if (req_details) {
-                       if (req_details->maps_key) {
-                               g_free(req_details->maps_key);
-                               req_details->maps_key = NULL;
-                       }
-                       if (req_details->uri) {
-                               g_free(req_details->uri);
-                               req_details->uri = NULL;
-                       }
-                       g_free(req_details);
-                       req_details = NULL;
+               if (req_details->maps_key) {
+                       g_free(req_details->maps_key);
+                       req_details->maps_key = NULL;
+               }
+               if (req_details->uri) {
+                       g_free(req_details->uri);
+                       req_details->uri = NULL;
                }
+               g_free(req_details);
+               req_details = NULL;
        }
 
        return MAPZEN_ERROR_NONE;
@@ -1872,6 +1877,9 @@ int start_places_list_service(mapzen_search_req_s *req_details, mapzen_place_lis
                /* Add the request to queue */
                add_to_places_list(req_details, callback, request_id, user_data);
        } else {
+               if (!req_details)
+                       return MAPZEN_ERROR_INVALID_PARAMETER;
+
                MapzenPlaceListQueryData *queryData = (MapzenPlaceListQueryData *)g_malloc0(sizeof(MapzenPlaceListQueryData));
 
                if (queryData != NULL) {
@@ -1882,26 +1890,24 @@ int start_places_list_service(mapzen_search_req_s *req_details, mapzen_place_lis
                        query_places(req_details->maps_key, req_details->search_string, req_details->categories, req_details->boundary, req_details->num_res, queryData, REQ_TYPE_PLACES_LIST);
                }
 
-               if (req_details) {
-                       if (req_details->maps_key) {
-                               g_free(req_details->maps_key);
-                               req_details->maps_key = NULL;
-                       }
-                       if (req_details->boundary) {
-                               g_free(req_details->boundary);
-                               req_details->boundary = NULL;
-                       }
-                       if (req_details->search_string) {
-                               g_free(req_details->search_string);
-                               req_details->search_string = NULL;
-                       }
-                       if (req_details->categories) {
-                               g_free(req_details->categories);
-                               req_details->categories = NULL;
-                       }
-                       g_free(req_details);
-                       req_details = NULL;
+               if (req_details->maps_key) {
+                       g_free(req_details->maps_key);
+                       req_details->maps_key = NULL;
+               }
+               if (req_details->boundary) {
+                       g_free(req_details->boundary);
+                       req_details->boundary = NULL;
+               }
+               if (req_details->search_string) {
+                       g_free(req_details->search_string);
+                       req_details->search_string = NULL;
+               }
+               if (req_details->categories) {
+                       g_free(req_details->categories);
+                       req_details->categories = NULL;
                }
+               g_free(req_details);
+               req_details = NULL;
        }
 
        return MAPZEN_ERROR_NONE;
index f87dbf37e418d603629680e7c8776e0f500de2b4..eb94730243a5acb4400ae2cc0f781847a600018c 100644 (file)
@@ -427,7 +427,6 @@ mapzen_error_e TangramView::onViewObject(maps_view_h view, const maps_view_objec
        maps_view_object_get_type(object, &type);
 
        if (type < MAPS_VIEW_OBJECT_POLYLINE || type > MAPS_VIEW_OBJECT_MARKER) { return MAPZEN_ERROR_INVALID_PARAMETER; }
-       if (operation < MAPS_VIEW_OBJECT_ADD || operation > MAPS_VIEW_OBJECT_REMOVE) { return MAPZEN_ERROR_INVALID_PARAMETER; }
 
        auto& mapViewObjs = tv->mapViewObjects();
        auto& mutex = tv->viewObjectMutex();
@@ -809,7 +808,7 @@ mapzen_error_e TangramView::captureSnapshot(maps_view_h view, void **data, int *
        }
 
        *data = (void*)malloc(m_w * m_h * sizeof(unsigned int));
-       if (!data) {
+       if (!*data) {
                return MAPZEN_ERROR_OUT_OF_MEMORY;
        }
 
index a6bb44dc4483304361248d0919906ef947e7c078..6e874abfb8b3af3a60a4743d9ff1569aac35b10e 100644 (file)
@@ -1567,6 +1567,8 @@ EXPORT_API int maps_plugin_search_place_by_area(const maps_area_h boundary, cons
        if (!searchKeyword && !categoryId) {
                g_free(calldata_place);
                calldata_place = NULL;
+               g_free(place_req->maps_key);
+               place_req->maps_key = NULL;
                g_free(place_req);
                place_req = NULL;
                return MAPS_ERROR_INVALID_PARAMETER;
@@ -1782,25 +1784,14 @@ EXPORT_API int maps_plugin_search_place_by_address(const char *address, const ma
                maps_place_category_destroy(category);
        }
 
-       if (categoryId)
-               place_req->categories = g_strdup_printf("%s", categoryId);
-
-       if (address)
-               place_req->search_string = g_strdup_printf("%s", address);
-
-       if (!address && !categoryId) {
-               g_free(calldata_place);
-               calldata_place = NULL;
-               g_free(place_req);
-               place_req = NULL;
-               return MAPS_ERROR_INVALID_PARAMETER;
-       }
-
        if (categoryId) {
+               place_req->categories = g_strdup_printf("%s", categoryId);
                g_free(categoryId);
                categoryId = NULL;
        }
 
+       place_req->search_string = g_strdup_printf("%s", address);
+
        MAPS_LOGD(">>>>>>>> Place search categories :: %s <<<<<<<<<", place_req->categories);
 
        place_req->boundary = NULL;