[Groonga-commit] groonga/groonga at 4a318cd [master] Add null check of grn_ctx_at()'s return value in geo.c

Back to archive index

HorimotoYasuhiro null+****@clear*****
Wed Jun 21 19:05:08 JST 2017


HorimotoYasuhiro	2017-06-21 19:05:08 +0900 (Wed, 21 Jun 2017)

  New Revision: 4a318cd3d8e0bac48f165d2ff8063a8d47b26751
  https://github.com/groonga/groonga/commit/4a318cd3d8e0bac48f165d2ff8063a8d47b26751

  Merged 9a9e60c: Merge pull request #716 from komainu8/feature/add_check_return_value_of_grn_ctx_at

  Message:
    Add null check of grn_ctx_at()'s return value in geo.c

  Modified files:
    lib/geo.c

  Modified: lib/geo.c (+15 -0)
===================================================================
--- lib/geo.c    2017-06-16 16:40:47 +0900 (ad61603)
+++ lib/geo.c    2017-06-21 19:05:08 +0900 (d2582e2)
@@ -710,6 +710,11 @@ grn_geo_table_sort(grn_ctx *ctx, grn_obj *table, int offset, int limit,
   if ((index = find_geo_sort_index(ctx, column))) {
     grn_id tid;
     grn_pat *pat = (grn_pat *)grn_ctx_at(ctx, index->header.domain);
+    if (!pat) {
+      ERR(GRN_INVALID_ARGUMENT, "grn_ctx_at(): unknown grn_id"
+          "index->header.domain:%d", index->header.domain);
+      GRN_API_RETURN(i);
+    }
     grn_id domain = pat->obj.header.domain;
     grn_pat_cursor *pc = grn_pat_cursor_open(ctx, pat, NULL, 0,
                                              GRN_BULK_HEAD(geo_point),
@@ -871,6 +876,11 @@ grn_geo_select_in_circle(grn_ctx *ctx, grn_obj *index,
   grn_geo_point *center, on_circle;
   grn_geo_distance_raw_func distance_raw_func;
   pat = grn_ctx_at(ctx, index->header.domain);
+  if (!pat) {
+    ERR(GRN_INVALID_ARGUMENT, "grn_ctx_at(): unknown grn_id"
+        "index->header.domain:%d", index->header.domain);
+    goto exit;
+  }
   domain = pat->header.domain;
   if (domain != GRN_DB_TOKYO_GEO_POINT && domain != GRN_DB_WGS84_GEO_POINT) {
     char name[GRN_TABLE_MAX_KEY_SIZE];
@@ -1043,6 +1053,11 @@ in_rectangle_data_fill(grn_ctx *ctx, grn_obj *index,
   const char *domain_name;
 
   data->pat = grn_ctx_at(ctx, index->header.domain);
+  if(!data->pat) {
+    ERR(GRN_INVALID_ARGUMENT, "grn_ctx_at(): unknown grn_id"
+        "index->header.domain:%d", index->header.domain);
+    return;
+  }
   domain = data->pat->header.domain;
   if (domain != GRN_DB_TOKYO_GEO_POINT && domain != GRN_DB_WGS84_GEO_POINT) {
     char name[GRN_TABLE_MAX_KEY_SIZE];
-------------- next part --------------
HTML����������������������������...
下載 



More information about the Groonga-commit mailing list
Back to archive index