Commit 1c90905e authored by rswindell's avatar rswindell
Browse files

Checking return values of JS_NewStringCopyZ.

parent 6858fefa
......@@ -466,6 +466,7 @@ js_initcx(JSRuntime* runtime, SOCKET sock, JSObject** glob, JSObject** ftp)
JSContext* js_cx;
JSObject* js_glob;
JSObject* server;
JSString* js_str;
jsval val;
BOOL success=FALSE;
......@@ -501,11 +502,15 @@ js_initcx(JSRuntime* runtime, SOCKET sock, JSObject** glob, JSObject** ftp)
break;
sprintf(ver,"%s %s",FTP_SERVER,revision);
val = STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, ver));
if((js_str=JS_NewStringCopyZ(js_cx, ver))==NULL)
break;
val = STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, server, "version", &val))
break;
val = STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, ftp_ver()));
if((js_str=JS_NewStringCopyZ(js_cx, ftp_ver()))==NULL)
break;
val = STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, server, "version_detail", &val))
break;
......@@ -538,21 +543,28 @@ BOOL js_add_file(JSContext* js_cx, JSObject* array,
char* uploader, char* link)
{
JSObject* file;
JSString* js_str;
jsval val;
jsuint index;
if((file=JS_NewObject(js_cx, &js_file_class, NULL, NULL))==NULL)
return(FALSE);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, name));
if((js_str=JS_NewStringCopyZ(js_cx, name))==NULL)
return(FALSE);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, file, "name", &val))
return(FALSE);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, desc));
if((js_str=JS_NewStringCopyZ(js_cx, desc))==NULL)
return(FALSE);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, file, "description", &val))
return(FALSE);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, ext_desc));
if((js_str=JS_NewStringCopyZ(js_cx, ext_desc))==NULL)
return(FALSE);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, file, "extended_description", &val))
return(FALSE);
......@@ -580,7 +592,9 @@ BOOL js_add_file(JSContext* js_cx, JSObject* array,
if(!JS_SetProperty(js_cx, file, "times_downloaded", &val))
return(FALSE);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, uploader));
if((js_str=JS_NewStringCopyZ(js_cx, uploader))==NULL)
return(FALSE);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, file, "uploader", &val))
return(FALSE);
......@@ -588,7 +602,9 @@ BOOL js_add_file(JSContext* js_cx, JSObject* array,
if(!JS_SetProperty(js_cx, file, "settings", &val))
return(FALSE);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, link));
if((js_str=JS_NewStringCopyZ(js_cx, link))==NULL)
return(FALSE);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, file, "link", &val))
return(FALSE);
......@@ -626,6 +642,7 @@ BOOL js_generate_index(JSContext* js_cx, JSObject* parent,
JSObject* file_array=NULL;
JSObject* dir_array=NULL;
JSScript* js_script=NULL;
JSString* js_str;
JS_SetContextPrivate(js_cx, fp);
......@@ -654,7 +671,9 @@ BOOL js_generate_index(JSContext* js_cx, JSObject* parent,
break;
}
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, startup->html_index_file));
if((js_str=JS_NewStringCopyZ(js_cx, startup->html_index_file))==NULL)
break;
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, parent, "html_index_file", &val)) {
lprintf("%04d !JavaScript FAILED to set html_index_file property",sock);
break;
......@@ -705,13 +724,17 @@ BOOL js_generate_index(JSContext* js_cx, JSObject* parent,
strcat(vpath,scfg.lib[lib]->sname);
strcat(vpath,"/");
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, scfg.lib[lib]->sname));
if((js_str=JS_NewStringCopyZ(js_cx, scfg.lib[lib]->sname))==NULL)
break;
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, lib_obj, "name", &val)) {
lprintf("%04d !JavaScript FAILED to set curlib.name property",sock);
break;
}
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, scfg.lib[lib]->lname));
if((js_str=JS_NewStringCopyZ(js_cx, scfg.lib[lib]->lname))==NULL)
break;
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, lib_obj, "description", &val)) {
lprintf("%04d !JavaScript FAILED to set curlib.desc property",sock);
break;
......@@ -722,19 +745,25 @@ BOOL js_generate_index(JSContext* js_cx, JSObject* parent,
strcat(vpath,scfg.dir[dir]->code);
strcat(vpath,"/");
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, scfg.dir[dir]->code));
if((js_str=JS_NewStringCopyZ(js_cx, scfg.dir[dir]->code))==NULL)
break;
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, dir_obj, "code", &val)) {
lprintf("%04d !JavaScript FAILED to set curdir.code property",sock);
break;
}
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, scfg.dir[dir]->sname));
if((js_str=JS_NewStringCopyZ(js_cx, scfg.dir[dir]->sname))==NULL)
break;
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, dir_obj, "name", &val)) {
lprintf("%04d !JavaScript FAILED to set curdir.name property",sock);
break;
}
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, scfg.dir[dir]->lname));
if((js_str=JS_NewStringCopyZ(js_cx, scfg.dir[dir]->lname))==NULL)
break;
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, dir_obj, "description", &val)) {
lprintf("%04d !JavaScript FAILED to set curdir.desc property",sock);
break;
......@@ -747,7 +776,9 @@ BOOL js_generate_index(JSContext* js_cx, JSObject* parent,
}
}
val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, vpath));
if((js_str=JS_NewStringCopyZ(js_cx, vpath))==NULL)
break;
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(js_cx, parent, "path", &val)) {
lprintf("%04d !JavaScript FAILED to set curdir property",sock);
break;
......@@ -2251,6 +2282,7 @@ static void ctrl_thread(void* arg)
JSContext* js_cx=NULL;
JSObject* js_glob;
JSObject* js_ftp;
JSString* js_str;
#endif
thread_up(TRUE /* setuid */);
......@@ -3665,8 +3697,10 @@ static void ctrl_thread(void* arg)
lprintf("%04d !JavaScript ERROR creating file area object",sock);
}
js_val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, "name"));
JS_SetProperty(js_cx, js_ftp, "sort", &js_val);
if((js_str=JS_NewStringCopyZ(js_cx, "name"))!=NULL) {
js_val=STRING_TO_JSVAL(js_str);
JS_SetProperty(js_cx, js_ftp, "sort", &js_val);
}
js_val=BOOLEAN_TO_JSVAL(FALSE);
JS_SetProperty(js_cx, js_ftp, "reverse", &js_val);
......@@ -3695,8 +3729,10 @@ static void ctrl_thread(void* arg)
JS_SetProperty(js_cx, js_ftp, "reverse", &js_val);
}
}
js_val=STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, p));
JS_SetProperty(js_cx, js_ftp, "sort", &js_val);
if((js_str=JS_NewStringCopyZ(js_cx, p))!=NULL) {
js_val=STRING_TO_JSVAL(js_str);
JS_SetProperty(js_cx, js_ftp, "sort", &js_val);
}
}
}
#endif
......
......@@ -73,6 +73,7 @@ static JSBool js_client_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
char* p=NULL;
ulong val=0;
jsint tiny;
JSString* js_str;
client_t* client;
if((client=(client_t*)JS_GetPrivate(cx,obj))==NULL)
......@@ -100,14 +101,16 @@ static JSBool js_client_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
p=client->user;
break;
default:
return(TRUE);
return(JS_TRUE);
}
if(p!=NULL)
*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, p));
else
if(p!=NULL) {
if((js_str=JS_NewStringCopyZ(cx, p))==NULL)
return(JS_FALSE);
*vp = STRING_TO_JSVAL(js_str);
} else
*vp = INT_TO_JSVAL(val);
return(TRUE);
return(JS_TRUE);
}
#define CLIENT_PROP_FLAGS JSPROP_ENUMERATE|JSPROP_READONLY
......
......@@ -61,6 +61,7 @@ static JSBool js_console_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
ulong val;
jsint tiny;
JSString* js_str;
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
......@@ -100,10 +101,14 @@ static JSBool js_console_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
val=sbbs->telnet_mode;
break;
case CON_PROP_WORDWRAP:
*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, sbbs->wordwrap));
if((js_str=JS_NewStringCopyZ(cx, sbbs->wordwrap))==NULL)
return(JS_FALSE);
*vp = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
case CON_PROP_QUESTION:
*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, sbbs->question));
if((js_str=JS_NewStringCopyZ(cx, sbbs->question))==NULL)
return(JS_FALSE);
*vp = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
default:
return(JS_TRUE);
......@@ -231,7 +236,9 @@ js_inkey(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
key[0]=sbbs->inkey(mode);
key[1]=0;
js_str = JS_NewStringCopyZ(cx, key);
if((js_str = JS_NewStringCopyZ(cx, key))==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......@@ -252,7 +259,9 @@ js_getkey(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
key[0]=sbbs->getkey(mode);
key[1]=0;
js_str = JS_NewStringCopyZ(cx, key);
if((js_str = JS_NewStringCopyZ(cx, key))==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......@@ -299,6 +308,9 @@ js_getstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
free(p);
if(js_str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......@@ -354,7 +366,8 @@ js_getkeys(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
} else { // key
key[0]=(uchar)val;
key[1]=0;
js_str = JS_NewStringCopyZ(cx, key);
if((js_str = JS_NewStringCopyZ(cx, key))==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
}
......@@ -393,7 +406,10 @@ js_gettemplate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rva
SAFECOPY(str,JS_GetStringBytes(js_str));
sbbs->gettmplt(str,JS_GetStringBytes(js_fmt),mode);
js_str = JS_NewStringCopyZ(cx, str);
if((js_str=JS_NewStringCopyZ(cx, str))==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......@@ -760,13 +776,17 @@ static JSBool
js_ansi(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
int32 attr=0;
JSString* js_str;
sbbs_t* sbbs;
if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL)
return(JS_FALSE);
JS_ValueToInt32(cx,argv[0],&attr);
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,sbbs->ansi(attr)));
if((js_str=JS_NewStringCopyZ(cx,sbbs->ansi(attr)))==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......
......@@ -228,6 +228,9 @@ js_read(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
free(buf);
if(str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(str);
dbprintf(FALSE, p, "read %u bytes",len);
......@@ -241,6 +244,7 @@ js_readln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* cp;
char* buf;
int32 len=512;
JSString* js_str;
private_t* p;
*rval = JSVAL_NULL;
......@@ -268,7 +272,8 @@ js_readln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
cp=strchr(buf,p->etx);
if(cp) *cp=0;
}
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,buf));
if((js_str=JS_NewStringCopyZ(cx,buf))!=NULL)
*rval = STRING_TO_JSVAL(js_str);
}
free(buf);
......@@ -505,7 +510,8 @@ js_writeall(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(!JS_IsArrayObject(cx, array))
return(JS_TRUE);
JS_GetArrayLength(cx, array, &limit);
if(!JS_GetArrayLength(cx, array, &limit))
return(JS_FALSE);
*rval = BOOLEAN_TO_JSVAL(JS_TRUE);
......@@ -759,6 +765,7 @@ static JSBool js_file_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
static JSBool js_file_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
jsint tiny;
JSString* js_str;
private_t* p;
if((p=(private_t*)JS_GetPrivate(cx,obj))==NULL) {
......@@ -774,10 +781,14 @@ static JSBool js_file_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
switch(tiny) {
case FILE_PROP_NAME:
*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, p->name));
if((js_str=JS_NewStringCopyZ(cx, p->name))==NULL)
return(JS_FALSE);
*vp = STRING_TO_JSVAL(js_str);
break;
case FILE_PROP_MODE:
*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, p->mode));
if((js_str=JS_NewStringCopyZ(cx, p->mode))==NULL)
return(JS_FALSE);
*vp = STRING_TO_JSVAL(js_str);
break;
case FILE_PROP_EXISTS:
if(p->fp) /* open? */
......
......@@ -72,6 +72,7 @@ JSObject* DLLCALL js_CreateFileAreaObject(JSContext* cx, JSObject* parent, scfg_
JSObject* dirobj;
JSObject* lib_list;
JSObject* dir_list;
JSString* js_str;
jsval val;
jsuint index;
uint l,d;
......@@ -112,16 +113,22 @@ JSObject* DLLCALL js_CreateFileAreaObject(JSContext* cx, JSObject* parent, scfg_
if(!JS_SetProperty(cx, libobj, "number", &val))
return(NULL);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->lib[l]->sname));
if((js_str=JS_NewStringCopyZ(cx, cfg->lib[l]->sname))==NULL)
return(NULL);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(cx, libobj, "name", &val))
return(NULL);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->lib[l]->lname));
if((js_str=JS_NewStringCopyZ(cx, cfg->lib[l]->lname))==NULL)
return(NULL);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(cx, libobj, "description", &val))
return(NULL);
sprintf(vpath,"/%s/%s",cfg->lib[l]->sname,html_index_file);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, vpath));
if((js_str=JS_NewStringCopyZ(cx, vpath))==NULL)
return(NULL);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(cx, libobj, "link", &val))
return(NULL);
......@@ -150,31 +157,45 @@ JSObject* DLLCALL js_CreateFileAreaObject(JSContext* cx, JSObject* parent, scfg_
if(!JS_SetProperty(cx, dirobj, "number", &val))
return(NULL);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->dir[d]->code));
if((js_str=JS_NewStringCopyZ(cx, cfg->dir[d]->code))==NULL)
return(NULL);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(cx, dirobj, "code", &val))
return(NULL);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->dir[d]->sname));
if((js_str=JS_NewStringCopyZ(cx, cfg->dir[d]->sname))==NULL)
return(NULL);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(cx, dirobj, "name", &val))
return(NULL);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->dir[d]->lname));
if((js_str=JS_NewStringCopyZ(cx, cfg->dir[d]->lname))==NULL)
return(NULL);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(cx, dirobj, "description", &val))
return(NULL);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->dir[d]->path));
if((js_str=JS_NewStringCopyZ(cx, cfg->dir[d]->path))==NULL)
return(NULL);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(cx, dirobj, "path", &val))
return(NULL);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->dir[d]->exts));
if((js_str=JS_NewStringCopyZ(cx, cfg->dir[d]->exts))==NULL)
return(NULL);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(cx, dirobj, "extensions", &val))
return(NULL);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->dir[d]->upload_sem));
if((js_str=JS_NewStringCopyZ(cx, cfg->dir[d]->upload_sem))==NULL)
return(NULL);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(cx, dirobj, "upload_sem", &val))
return(NULL);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, cfg->dir[d]->data_dir));
if((js_str=JS_NewStringCopyZ(cx, cfg->dir[d]->data_dir))==NULL)
return(NULL);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(cx, dirobj, "data_dir", &val))
return(NULL);
......@@ -210,7 +231,9 @@ JSObject* DLLCALL js_CreateFileAreaObject(JSContext* cx, JSObject* parent, scfg_
,cfg->lib[l]->sname
,cfg->dir[d]->code
,html_index_file);
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx, vpath));
if((js_str=JS_NewStringCopyZ(cx, vpath))==NULL)
return(NULL);
val=STRING_TO_JSVAL(js_str);
if(!JS_SetProperty(cx, dirobj, "link", &val))
return(NULL);
......
......@@ -50,6 +50,7 @@ enum {
static JSBool js_system_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
jsint tiny;
JSString* js_str;
tiny = JSVAL_TO_INT(id);
......@@ -58,10 +59,12 @@ static JSBool js_system_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
*vp = INT_TO_JSVAL(errno);
break;
case GLOB_PROP_ERRNO_STR:
*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, strerror(errno)));
if((js_str=JS_NewStringCopyZ(cx, strerror(errno)))==NULL)
return(JS_FALSE);
*vp = STRING_TO_JSVAL(js_str);
break;
}
return(TRUE);
return(JS_TRUE);
}
#define GLOBOBJ_FLAGS JSPROP_ENUMERATE|JSPROP_READONLY
......@@ -165,6 +168,9 @@ js_format(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
str = JS_NewStringCopyZ(cx, p);
JS_smprintf_free(p);
if(str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(str);
return(JS_TRUE);
}
......@@ -300,7 +306,9 @@ js_ascii(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
str[0]=(uchar)JSVAL_TO_INT(argv[0]);
str[1]=0;
js_str = JS_NewStringCopyZ(cx, str);
if((js_str = JS_NewStringCopyZ(cx, str))==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......@@ -339,6 +347,9 @@ js_ascii_str(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_str = JS_NewStringCopyZ(cx, p);
free(p);
if(js_str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......@@ -366,6 +377,9 @@ js_strip_ctrl(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
js_str = JS_NewStringCopyZ(cx, p);
free(p);
if(js_str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......@@ -392,6 +406,9 @@ js_strip_exascii(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
js_str = JS_NewStringCopyZ(cx, p);
free(p);
if(js_str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......@@ -418,6 +435,9 @@ js_truncsp(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_str = JS_NewStringCopyZ(cx, p);
free(p);
if(js_str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......@@ -454,6 +474,9 @@ js_truncstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
js_str = JS_NewStringCopyZ(cx, p);
free(p);
if(js_str==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......@@ -615,6 +638,7 @@ js_directory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* p;
glob_t g;
JSObject* array;
JSString* js_str;
jsint len=0;
jsval val;
......@@ -636,7 +660,9 @@ js_directory(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
glob(p,flags,NULL,&g);
for(i=0;i<(int)g.gl_pathc;i++) {
val=STRING_TO_JSVAL(JS_NewStringCopyZ(cx,g.gl_pathv[i]));
if((js_str=JS_NewStringCopyZ(cx,g.gl_pathv[i]))==NULL)
break;
val=STRING_TO_JSVAL(js_str);
if(!JS_SetElement(cx, array, len++, &val))
break;
}
......@@ -693,6 +719,7 @@ js_strftime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* fmt;
time_t t=time(NULL);
struct tm tm;
JSString* js_str;
if(!JSVAL_IS_STRING(argv[0])) {
JS_ReportError(cx,nostringarg);
......@@ -708,7 +735,10 @@ js_strftime(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
memset(&tm,0,sizeof(tm));
strftime(str,sizeof(str),fmt,&tm);
*rval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, str));
if((js_str=JS_NewStringCopyZ(cx, str))==NULL)
return(JS_FALSE);
*rval = STRING_TO_JSVAL(js_str);
return(JS_TRUE);
}
......
......@@ -341,7 +341,8 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm
if(JS_GetProperty(cx, hdr, "field_list", &val) && JSVAL_IS_OBJECT(val)) {
array=JSVAL_TO_OBJECT(val);
len=0;
JS_GetArrayLength(cx, array, &len);
if(!JS_GetArrayLength(cx, array, &len))
return(FALSE);
for(i=0;i<len;i++) {
if(!JS_GetElement(cx, array, i, &val))
......@@ -377,6 +378,7 @@ js_get_msg_header(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *
JSObject* hdrobj;
JSObject* array;
JSObject* field;
JSString* js_str;
jsint items;
private_t* p;
......@@ -417,42 +419,58 @@ js_get_msg_header(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *
JS_DefineProperty(cx, hdrobj, "number", INT_TO_JSVAL(msg.hdr.number)