check view uri in calendar_query_set_filter API 41/148541/1
authorJeesun Kim <iamjs.kim@samsung.com>
Fri, 8 Sep 2017 05:54:19 +0000 (14:54 +0900)
committerJeesun Kim <iamjs.kim@samsung.com>
Fri, 8 Sep 2017 05:54:31 +0000 (14:54 +0900)
Change-Id: Iae3e0627a65867198f46e2f1b06d688d72c6d35d

common/cal_query.c

index 7429dd5..38175b4 100644 (file)
@@ -112,29 +112,38 @@ EXPORT_API int calendar_query_set_filter(calendar_query_h query, calendar_filter
 {
        CHECK_CALENDAR_SUPPORTED(CALENDAR_FEATURE);
 
-       cal_query_s *que;
+       cal_query_s *s_query;
+       cal_composite_filter_s *s_filter;
        calendar_filter_h new_filter;
        int ret = CALENDAR_ERROR_NONE;
 
        RETV_IF(NULL == query, CALENDAR_ERROR_INVALID_PARAMETER);
        RETV_IF(NULL == filter, CALENDAR_ERROR_INVALID_PARAMETER);
 
-       que = (cal_query_s *)query;
-
-       if (NULL == ((cal_composite_filter_s*)filter)->filters) {
+       s_query = (cal_query_s *)query;
+       s_filter = (cal_composite_filter_s*)filter;
+       if (NULL == s_filter->filters) {
                /* LCOV_EXCL_START */
                ERR("Empty filter");
                return CALENDAR_ERROR_NO_DATA;
                /* LCOV_EXCL_STOP */
        }
 
+       if (s_query->view_uri && s_filter->view_uri
+                       && CAL_STRING_EQUAL != strcmp(s_query->view_uri, s_filter->view_uri)) {
+               /* LCOV_EXCL_START */
+               ERR("View is not same query[%s] filter[%s]", s_query->view_uri, s_filter->view_uri);
+               return CALENDAR_ERROR_INVALID_PARAMETER;
+               /* LCOV_EXCL_STOP */
+       }
+
        ret = cal_filter_clone(filter, &new_filter);
        RETV_IF(ret != CALENDAR_ERROR_NONE, ret);
 
-       if (que->filter)
-               calendar_filter_destroy((calendar_filter_h)que->filter);
+       if (s_query->filter)
+               calendar_filter_destroy((calendar_filter_h)s_query->filter);
 
-       que->filter = (cal_composite_filter_s*)new_filter;
+       s_query->filter = (cal_composite_filter_s*)new_filter;
 
        return ret;
 }