From ab5dea3bf0b1ef3c904544eeb37b81721b4e5bfe Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Sun, 2 Jun 2013 18:43:08 -0400 Subject: [PATCH] don't allow putval of None --- devsupApp/src/dbfield.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/devsupApp/src/dbfield.c b/devsupApp/src/dbfield.c index 8450432..04e2421 100644 --- a/devsupApp/src/dbfield.c +++ b/devsupApp/src/dbfield.c @@ -105,6 +105,13 @@ static PyObject* pyField_putval(pyField *self, PyObject* args) if(!PyArg_ParseTuple(args, "O", &val)) return NULL; + if(val==Py_None) { + PyErr_Format(PyExc_ValueError, "Can't assign None to %s.%s", + self->addr.precord->name, + self->addr.pfldDes->name); + return NULL; + } + switch(self->addr.field_type) { #define OP(FTYPE, CTYPE, FN) case DBF_##FTYPE: *(CTYPE*)self->addr.pfield = FN(val); break @@ -130,8 +137,12 @@ static PyObject* pyField_putval(pyField *self, PyObject* args) #else fld = PyString_AsString(val); #endif - strncpy(dest, fld, MAX_STRING_SIZE); - dest[MAX_STRING_SIZE-1]='\0'; + if(fld) { + strncpy(dest, fld, MAX_STRING_SIZE); + dest[MAX_STRING_SIZE-1]='\0'; + } else { + dest[0] = '\0'; + } #if PY_MAJOR_VERSION >= 3 Py_DECREF(data); #endif