--- _msi.c.orig 2015-04-02 15:01:02.882326352 -0700 +++ _msi.c 2015-04-04 16:36:56.919605881 -0700 @@ -324,6 +324,10 @@ code = MsiRecordGetInteger(err, 1); /* XXX code */ if (MsiFormatRecord(0, err, res, &size) == ERROR_MORE_DATA) { res = malloc(size+1); + if (res == NULL) /* malloc() failed, out of memory... */ + PyErr_SetString(MSIError, "out of memory"); + return NULL; + } MsiFormatRecord(0, err, res, &size); res[size]='\0'; } @@ -547,6 +551,10 @@ &fval, sval, &ssize); if (status == ERROR_MORE_DATA) { sval = malloc(ssize); + if (sval == NULL) { /* malloc() failed, out of memory... */ + PyErr_SetString(MSIError, "out of memory"); + return NULL; + } status = MsiSummaryInfoGetProperty(si->h, field, &type, &ival, &fval, sval, &ssize); }