]> granicus.if.org Git - python/commitdiff
Protect against core dumps in gdbm: don't allow access by key once the
authorFred Drake <fdrake@acm.org>
Mon, 7 Feb 2000 17:19:41 +0000 (17:19 +0000)
committerFred Drake <fdrake@acm.org>
Mon, 7 Feb 2000 17:19:41 +0000 (17:19 +0000)
database is closed.  Raise gdbm.error instead.

Bug report #198 submitted by Barry Haddow <bhaddow@orbism.com>.

Modules/gdbmmodule.c

index 0df7df24cf0e4ca9084e839d6efb7349b40090f9..31855f5e72e175f6e3b8c09241d95db6dc9587e0 100644 (file)
@@ -155,7 +155,12 @@ register PyObject *key;
        
        if (!PyArg_Parse(key, "s#", &krec.dptr, &krec.dsize) )
                return NULL;
-       
+
+       if (dp->di_dbm == NULL) {
+               PyErr_SetString(DbmError,
+                               "GDBM object has already been closed");
+               return NULL;
+       }
        drec = gdbm_fetch(dp->di_dbm, krec);
        if ( drec.dptr == 0 ) {
                PyErr_SetString(PyExc_KeyError,
@@ -180,7 +185,8 @@ PyObject *v, *w;
                return -1;
        }
         if (dp->di_dbm == NULL) {
-                 PyErr_SetString(DbmError, "GDBM object has already been closed"); 
+                 PyErr_SetString(DbmError,
+                                 "GDBM object has already been closed"); 
                  return -1; 
         }
        dp->di_size = -1;