[Python-checkins] CVS: python/dist/src/Modules bsddbmodule.c,1.25,1.26
A.M. Kuchling
python-dev@python.org
Thu, 14 Dec 2000 16:59:34 -0800
Update of /cvsroot/python/python/dist/src/Modules
In directory slayer.i.sourceforge.net:/tmp/cvs-serv1941
Modified Files:
bsddbmodule.c
Log Message:
[Patch #102827] Fix for PR#119558, avoiding core dumps by checking for
malloc() returning NULL
Index: bsddbmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/bsddbmodule.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -r1.25 -r1.26
*** bsddbmodule.c 2000/09/01 23:29:26 1.25
--- bsddbmodule.c 2000/12/15 00:59:32 1.26
***************
*** 267,273 ****
if (drec.size > sizeof(buf)) data = malloc(drec.size);
else data = buf;
! memcpy(data,drec.data,drec.size);
}
BSDDB_END_SAVE(dp)
if (status != 0) {
if (status < 0)
--- 267,274 ----
if (drec.size > sizeof(buf)) data = malloc(drec.size);
else data = buf;
! if (data!=NULL) memcpy(data,drec.data,drec.size);
}
BSDDB_END_SAVE(dp)
+ if (data==NULL) return PyErr_NoMemory();
if (status != 0) {
if (status < 0)
***************
*** 388,394 ****
if (krec.size > sizeof(buf)) data = malloc(krec.size);
else data = buf;
! memcpy(data,krec.data,krec.size);
}
BSDDB_END_SAVE(dp)
while (status == 0) {
item = PyString_FromStringAndSize(data, (int)krec.size);
--- 389,396 ----
if (krec.size > sizeof(buf)) data = malloc(krec.size);
else data = buf;
! if (data!=NULL) memcpy(data,krec.data,krec.size);
}
BSDDB_END_SAVE(dp)
+ if (data==NULL) return PyErr_NoMemory();
while (status == 0) {
item = PyString_FromStringAndSize(data, (int)krec.size);
***************
*** 409,415 ****
if (krec.size > sizeof(buf)) data = malloc(krec.size);
else data = buf;
! memcpy(data,krec.data,krec.size);
}
BSDDB_END_SAVE(dp)
}
if (status < 0) {
--- 411,418 ----
if (krec.size > sizeof(buf)) data = malloc(krec.size);
else data = buf;
! if (data!=NULL) memcpy(data,krec.data,krec.size);
}
BSDDB_END_SAVE(dp)
+ if (data==NULL) return PyErr_NoMemory();
}
if (status < 0) {
***************
*** 468,474 ****
if (drec.size > sizeof(buf)) data = malloc(drec.size);
else data = buf;
! memcpy(data,drec.data,drec.size);
}
BSDDB_END_SAVE(dp)
if (status != 0) {
if (status < 0)
--- 471,478 ----
if (drec.size > sizeof(buf)) data = malloc(drec.size);
else data = buf;
! if (data!=NULL) memcpy(data,drec.data,drec.size);
}
BSDDB_END_SAVE(dp)
+ if (data==NULL) return PyErr_NoMemory();
if (status != 0) {
if (status < 0)
***************
*** 506,516 ****
if (krec.size > sizeof(kbuf)) kdata = malloc(krec.size);
else kdata = kbuf;
! memcpy(kdata,krec.data,krec.size);
if (drec.size > sizeof(dbuf)) ddata = malloc(drec.size);
else ddata = dbuf;
! memcpy(ddata,drec.data,drec.size);
}
BSDDB_END_SAVE(dp)
! if (status != 0) {
if (status < 0)
PyErr_SetFromErrno(BsddbError);
--- 510,525 ----
if (krec.size > sizeof(kbuf)) kdata = malloc(krec.size);
else kdata = kbuf;
! if (kdata!=NULL) memcpy(kdata,krec.data,krec.size);
if (drec.size > sizeof(dbuf)) ddata = malloc(drec.size);
else ddata = dbuf;
! if (ddata!=NULL) memcpy(ddata,drec.data,drec.size);
}
BSDDB_END_SAVE(dp)
! if (status == 0) {
! if ((kdata==NULL) || (ddata==NULL))
! return PyErr_NoMemory();
! }
! else {
! /* (status != 0) */
if (status < 0)
PyErr_SetFromErrno(BsddbError);