extern int lineno, column;
extern char *filename ;
-extern char *fullSrcFileName ;
int yylineno = 1 ;
void count() ;
int process_pragma(char *);
<asm>"_endasm" {
count();
*asmp = '\0';
- yylval.yyinline = malloc (strlen(asmbuff)+1);
- strcpy(yylval.yyinline,asmbuff);
+ yylval.yyinline = strdup (asmbuff);
BEGIN(INITIAL);
return (INLINEASM);
}
/* get the currentfile name info */
s++ ;
- if ( strncmp(s,fullSrcFileName,strlen(fullSrcFileName)) == 0) {
+ /* in c1mode fullSrcFileName is NULL */
+ if ( fullSrcFileName &&
+ strncmp(s,fullSrcFileName,strlen(fullSrcFileName)) == 0) {
lineno = yylineno = lNum;
currFname = fullSrcFileName ;
} else {
/* mark the end of the filename */
while (*s != '"') s++;
*s = '\0';
- currFname = malloc (strlen(sb)+1);
- strcpy(currFname,sb);
+ currFname = strdup (sb);
lineno = yylineno = lNum;
}
filename = currFname ;
{
/* check if it is in the typedef table */
if (findSym(TypedefTab,NULL,yytext)) {
- strcpy(yylval.yychar,yytext);
+ strncpyz(yylval.yychar,yytext, SDCC_NAME_MAX);
return (TYPE_NAME) ;
}
else {
- strcpy (yylval.yychar,yytext);
+ strncpyz (yylval.yychar,yytext, SDCC_NAME_MAX);
return(IDENTIFIER);
}
}
}
*str = '\0';
+ /* If we aren't going to fix it, at least trap it. */
+ if (strlen(strLitBuff) >= sizeof(strLitBuff))
+ {
+ fprintf(stderr, "Internal error: strLitBuff overflowed.\n");
+ exit(-1);
+ }
+
return strLitBuff;
}