Use calloc() instead of malloc() followed by memset to 0. Bug 124302, patch by

Aaron Lehmann <aaronl@vitelus.com>, r=timeless, sr=bzbarsky
This commit is contained in:
bzbarsky%mit.edu 2002-11-20 23:13:09 +00:00
Родитель b1264437f8
Коммит e43c4fe666
12 изменённых файлов: 19 добавлений и 356 удалений

Просмотреть файл

@ -707,15 +707,13 @@ void add_macro(char *pString, macro_list **ppList)
/* Allocate a new list entry for the macro.
*/
pEntry = (macro_list *)malloc(sizeof(macro_list));
memset(pEntry, 0, sizeof(macro_list));
pEntry = (macro_list *)calloc(1, sizeof(macro_list));
/* Very first part of the string is the macro name.
* How long is it?
*/
iLength = macro_length(pString);
pEntry->m_pMacro = (char *)malloc(iLength + 1);
memset(pEntry->m_pMacro, 0, iLength + 1);
pEntry->m_pMacro = (char *)calloc(iLength + 1, 1);
strncpy(pEntry->m_pMacro, pString, iLength);
/* Skip to the values.
@ -803,11 +801,9 @@ void add_values(char *pString, char_list **ppList)
/* Allocate a new list entry for the next value.
*/
pEntry = (char_list *)malloc(sizeof(char_list));
memset(pEntry, 0, sizeof(char_list));
pEntry = (char_list *)calloc(1, sizeof(char_list));
pEntry->m_pString = (char *)malloc(iLength + 1);
memset(pEntry->m_pString, 0, iLength + 1);
pEntry->m_pString = (char *)calloc(iLength + 1, 1);
strncpy(pEntry->m_pString, pString, iLength);
/* Add new value entry to the end of the list.

Просмотреть файл

@ -1,307 +0,0 @@
#include "watcomfx.h"
#include "nsres.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct RESDATABASE
{
DB *hdb;
NSRESTHREADINFO *threadinfo;
char * pbuf[MAXBUFNUM];
} ;
typedef struct RESDATABASE * RESHANDLE;
typedef struct STRINGDATA
{
char *str;
unsigned int charsetid;
} STRINGDATA;
typedef unsigned int CHARSETTYPE;
#define RES_LOCK if (hres->threadinfo) hres->threadinfo->fn_lock(hres->threadinfo->lock);
#define RES_UNLOCK if (hres->threadinfo) hres->threadinfo->fn_unlock(hres->threadinfo->lock);
int GenKeyData(const char *library, int32 id, DBT *key);
/*
Right now, the page size used for resource is same as for Navigator cache
database
*/
HASHINFO res_hash_info = {
32*1024,
0,
0,
0,
0, /* 64 * 1024U */
0};
int GenKeyData(const char *library, int32 id, DBT *key)
{
char idstr[10];
static char * strdata = NULL;
size_t len;
if (strdata)
free (strdata);
if (id == 0)
idstr[0] = '\0';
else
{
sprintf(idstr, "%d", id);
/* itoa(id, idstr, 10); */
}
if (library == NULL)
len = strlen(idstr) + 1;
else
len = strlen(library) + strlen(idstr) + 1;
strdata = (char *) malloc (len);
strcpy(strdata, library);
strcat(strdata, idstr);
key->size = len;
key->data = strdata;
return 1;
}
NSRESHANDLE NSResCreateTable(const char *filename, NSRESTHREADINFO *threadinfo)
{
RESHANDLE hres;
int flag;
flag = O_RDWR | O_CREAT;
hres = (RESHANDLE) malloc ( sizeof(struct RESDATABASE) );
memset(hres, 0, sizeof(struct RESDATABASE));
if (threadinfo && threadinfo->lock && threadinfo->fn_lock
&& threadinfo->fn_unlock)
{
hres->threadinfo = (NSRESTHREADINFO *) malloc( sizeof(NSRESTHREADINFO) );
hres->threadinfo->lock = threadinfo->lock;
hres->threadinfo->fn_lock = threadinfo->fn_lock;
hres->threadinfo->fn_unlock = threadinfo->fn_unlock;
}
RES_LOCK
hres->hdb = dbopen(filename, flag, 0644, DB_HASH, &res_hash_info);
RES_UNLOCK
if(!hres->hdb)
return NULL;
return (NSRESHANDLE) hres;
}
NSRESHANDLE NSResOpenTable(const char *filename, NSRESTHREADINFO *threadinfo)
{
RESHANDLE hres;
int flag;
flag = O_RDONLY; /* only open database for reading */
hres = (RESHANDLE) malloc ( sizeof(struct RESDATABASE) );
memset(hres, 0, sizeof(struct RESDATABASE));
if (threadinfo && threadinfo->lock && threadinfo->fn_lock
&& threadinfo->fn_unlock)
{
hres->threadinfo = (NSRESTHREADINFO *) malloc( sizeof(NSRESTHREADINFO) );
hres->threadinfo->lock = threadinfo->lock;
hres->threadinfo->fn_lock = threadinfo->fn_lock;
hres->threadinfo->fn_unlock = threadinfo->fn_unlock;
}
RES_LOCK
hres->hdb = dbopen(filename, flag, 0644, DB_HASH, &res_hash_info);
RES_UNLOCK
if(!hres->hdb)
return NULL;
return (NSRESHANDLE) hres;
}
void NSResCloseTable(NSRESHANDLE handle)
{
RESHANDLE hres;
int i;
if (handle == NULL)
return;
hres = (RESHANDLE) handle;
RES_LOCK
(*hres->hdb->sync)(hres->hdb, 0);
(*hres->hdb->close)(hres->hdb);
RES_UNLOCK
for (i = 0; i < MAXBUFNUM; i++)
{
if (hres->pbuf[i])
free (hres->pbuf[i]);
}
if (hres->threadinfo)
free (hres->threadinfo);
free (hres);
}
char *NSResLoadString(NSRESHANDLE handle, const char * library, int32 id,
unsigned int charsetid, char *retbuf)
{
int status;
RESHANDLE hres;
DBT key, data;
if (handle == NULL)
return NULL;
hres = (RESHANDLE) handle;
GenKeyData(library, id, &key);
RES_LOCK
status = (*hres->hdb->get)(hres->hdb, &key, &data, 0);
RES_UNLOCK
if (retbuf)
{
memcpy(retbuf, (char *)data.data + sizeof(CHARSETTYPE), data.size - sizeof(CHARSETTYPE));
return retbuf;
}
else
{
static int WhichString = 0;
static int bFirstTime = 1;
char *szLoadedString;
int i;
RES_LOCK
if (bFirstTime) {
for (i = 0; i < MAXBUFNUM; i++)
hres->pbuf[i] = (char *) malloc(MAXSTRINGLEN * sizeof(char));
bFirstTime = 0;
}
szLoadedString = hres->pbuf[WhichString];
WhichString++;
/* reset to 0, if WhichString reaches to the end */
if (WhichString == MAXBUFNUM)
WhichString = 0;
if (status == 0)
memcpy(szLoadedString, (char *) data.data + sizeof(CHARSETTYPE),
data.size - sizeof(CHARSETTYPE));
else
szLoadedString[0] = 0;
RES_UNLOCK
return szLoadedString;
}
}
int32 NSResGetSize(NSRESHANDLE handle, const char *library, int32 id)
{
int status;
RESHANDLE hres;
DBT key, data;
if (handle == NULL)
return 0;
hres = (RESHANDLE) handle;
GenKeyData(library, id, &key);
RES_LOCK
status = (*hres->hdb->get)(hres->hdb, &key, &data, 0);
RES_UNLOCK
return data.size - sizeof(CHARSETTYPE);
}
int32 NSResLoadResource(NSRESHANDLE handle, const char *library, int32 id, char *retbuf)
{
int status;
RESHANDLE hres;
DBT key, data;
if (handle == NULL)
return 0;
hres = (RESHANDLE) handle;
GenKeyData(library, id, &key);
RES_LOCK
status = (*hres->hdb->get)(hres->hdb, &key, &data, 0);
RES_UNLOCK
if (retbuf)
{
memcpy(retbuf, (char *)data.data + sizeof(CHARSETTYPE), data.size - sizeof(CHARSETTYPE));
return data.size;
}
else
return 0;
}
int NSResAddString(NSRESHANDLE handle, const char *library, int32 id,
const char *string, unsigned int charset)
{
int status;
RESHANDLE hres;
DBT key, data;
char * recdata;
if (handle == NULL)
return 0;
hres = (RESHANDLE) handle;
GenKeyData(library, id, &key);
data.size = sizeof(CHARSETTYPE) + (strlen(string) + 1) ;
recdata = (char *) malloc(data.size) ;
/* set charset to the first field of record data */
*((CHARSETTYPE *)recdata) = (CHARSETTYPE)charset;
/* set data field */
memcpy(recdata+sizeof(CHARSETTYPE), string, strlen(string) + 1);
data.data = recdata;
RES_LOCK
status = (*hres->hdb->put)(hres->hdb, &key, &data, 0);
if (recdata)
free(recdata);
RES_UNLOCK
return status;
}

Просмотреть файл

@ -104,8 +104,7 @@ _OpenURL(NPP npp, const char *szURL, const char *szTarget, void *pNotifyData, co
USES_CONVERSION;
DWORD cbNewURL = (url.Length() + bstrCurrentURL.Length() + 1) * sizeof(WCHAR);
DWORD cbNewURLUsed = 0;
WCHAR *pszNewURL = (WCHAR *) malloc(cbNewURL);
memset(pszNewURL, 0, cbNewURL);
WCHAR *pszNewURL = (WCHAR *) calloc(cbNewURL, 1);
ATLASSERT(pszNewURL);
CoInternetCombineUrl(

Просмотреть файл

@ -437,8 +437,7 @@ xxlib_rgb_make_colorcube (XlibRgbHandle *handle, unsigned long *pixels, int nr,
unsigned char rt[16], gt[16], bt[16];
int i;
handle->colorcube = malloc(sizeof(unsigned char) * 4096);
memset(handle->colorcube, 0, (sizeof(unsigned char) * 4096));
handle->colorcube = calloc(4096, 1);
for (i = 0; i < 16; i++)
{
rt[i] = ng * nb * ((i * 17 * (nr - 1) + 128) >> 8);
@ -462,8 +461,7 @@ xxlib_rgb_make_colorcube_d (XlibRgbHandle *handle, unsigned long *pixels, int nr
int r, g, b;
int i;
handle->colorcube_d = malloc(sizeof(unsigned char) * 512);
memset(handle->colorcube_d, 0, (sizeof(unsigned char) * 512));
handle->colorcube_d = calloc(512, 1);
for (i = 0; i < 512; i++)
{
r = MIN (nr - 1, i >> 6);

Просмотреть файл

@ -374,8 +374,7 @@ main (int argc, char **argv)
PR_Init("mimefilt", 24, 1, 0);
cdb_handle = (CERTCertDBHandle *) malloc(sizeof(*cdb_handle));
memset(cdb_handle, 0, sizeof(*cdb_handle));
cdb_handle = (CERTCertDBHandle *) calloc(1, sizeof(*cdb_handle));
if (SECSuccess != CERT_OpenCertDB(cdb_handle, PR_FALSE, test_cdb_name_cb, NULL))
CERT_OpenVolatileCertDB(cdb_handle);

Просмотреть файл

@ -117,8 +117,7 @@ Init () {
gDesc = RDF_GetResource("Description", 1);
gEditor = RDF_GetResource("editor", 1);
gNewsGroup = RDF_GetResource("newsGroup", 1);
gTemplate = (char*) malloc(MAX_TEMPLATE_SIZE+1);
memset(gTemplate, '\0', MAX_TEMPLATE_SIZE);
gTemplate = (char*) calloc(MAX_TEMPLATE_SIZE+1, 1);
n = fread(gTemplate, 1, MAX_TEMPLATE_SIZE, templateFile);
gTemplate[n] = '\0';
fclose(templateFile);
@ -226,19 +225,6 @@ void describeCategory (WriteClientProc callBack, void* obj, RDF_Resource u) {
#define MRN 1000
char*
xGetMem (size_t n) {
char* ans = (char*) malloc(n);
if (ans) memset(ans, '\0', n);
return ans;
}
void
xFreeMem(void* item) {
free(item);
}
RDF_Resource
stToProp (char c) {
if (!c || (c == 'a')) {
@ -260,8 +246,8 @@ AnswerSearchQuery (WriteClientProc callBack, void* obj, char *query, char* cooki
size_t catn = 0;
size_t itemn = 0;
size_t index;
RDF_Resource* cats = (RDF_Resource*)xGetMem(sizeof(RDF_Resource) * (MRN + 1));
RDF_Resource* items = (RDF_Resource*)xGetMem(sizeof(RDF_Resource) * (MRN + 1));
RDF_Resource* cats = (RDF_Resource*)calloc(MRN+1, sizeof(RDF_Resource));
RDF_Resource* items = (RDF_Resource*)calloc(MRN+1, sizeof(RDF_Resource));
char showDesc = cookiePropValue(cookie, "searchDesc");
(*callBack)(obj, PREFIX);
@ -302,8 +288,8 @@ AnswerSearchQuery (WriteClientProc callBack, void* obj, char *query, char* cooki
(*callBack)(obj, "</UL>");
}
xFreeMem(items);
xFreeMem(cats);
free(items);
free(cats);
}

Просмотреть файл

@ -178,9 +178,7 @@ startsWith (const char* pattern, const char* uuid) {
char*
getMem (size_t n) {
char* ans = (char*) malloc(n);
if (ans) memset(ans, '\0', n);
return ans;
return (char*) calloc(1, n);
}
void

Просмотреть файл

@ -119,9 +119,7 @@ startsWith (const char* pattern, const char* uuid)
char*
getMem (size_t n) {
char* ans = (char*) malloc(n);
if (ans) memset(ans, '\0', n);
return ans;
return (char*) calloc(1, n);
}
void

Просмотреть файл

@ -43,8 +43,7 @@
#include <stdio.h>
void main () {
char* nextQuery = malloc(200);
memset(nextQuery, '\0', 200);
char* nextQuery = calloc(200, sizeof(char));
RDF_Initialize();
while (1) {
int n;

Просмотреть файл

@ -156,8 +156,7 @@ NS_IMETHODIMP nsFilePicker::Show(PRInt16 *retval)
filedlg.fl |= FDS_OPEN_DIALOG;
}
PMYDATA pmydata;
pmydata = (PMYDATA)malloc(sizeof(MYDATA));
memset(pmydata, 0, sizeof(MYDATA));
pmydata = (PMYDATA)calloc(1, sizeof(MYDATA));
filedlg.ulUser = (ULONG)pmydata;
filedlg.pfnDlgProc = FileDialogProc;

Просмотреть файл

@ -579,8 +579,7 @@ nsXIEngine::ParseURL(char *aURL, char **aHost, char **aDir)
hostTerminator = strchr(host, '/');
if (!hostTerminator) return E_BAD_FTP_URL;
*aHost = (char *) malloc(sizeof(char) * (hostTerminator - host + 1));
memset(*aHost, 0, (hostTerminator - host + 1));
*aHost = (char *) calloc(hostTerminator - host + 1, 1);
strncpy(*aHost, host, hostTerminator - host);
dirTerminator = strrchr(hostTerminator + 1, '/');

Просмотреть файл

@ -392,8 +392,7 @@ int ParseArgumentList(struct Params *ArgList, int argc, char *argv[])
ArgList->Sector = -1;
ArgList->SuppressHeader = 0;
ArgList->AutoInfoFormat = 0;
ArgList->DirName = (char *)malloc(sizeof(char)*MAX_BUF);
memset(ArgList->DirName, 0, MAX_BUF);
ArgList->DirName = (char *)calloc(MAX_BUF, 1);
for(i = 1; i < argc; i++)
{