]> git.ipfire.org Git - thirdparty/sarg.git/blobdiff - language.c
Protection against buffer overflows in getword and friends and report the origin...
[thirdparty/sarg.git] / language.c
index 9604af4ec023d3090675180c92f3f1916daad490..fbae8cc8617aa4534a31358cd3a9d88313a62076 100644 (file)
 
 void language_load(char *language)
 {
-
+   char lfile[FILENAME_MAX];
    FILE *fp_text;
    int record=0;
 
-   sprintf(warea,"%s/languages/%s",SYSCONFDIR,language);
+   sprintf(lfile,"%s/languages/%s",SYSCONFDIR,language);
 
-   if((fp_text=fopen(warea,"r"))==NULL) {
-     fprintf(stderr, "SARG: (language) Cannot open language file: %s\n",warea);
+   if((fp_text=fopen(lfile,"r"))==NULL) {
+     fprintf(stderr, "SARG: (language) Cannot open language file: %s\n",lfile);
      exit(1);
    }
 
    while(fgets(buf,MAXLEN,fp_text)!=NULL) {
-      getword(warea,buf,'"');
-      getword(warea,buf,'"');
+      if (getword(warea,sizeof(warea),buf,'"')<0 || getword(warea,sizeof(warea),buf,'"')<0) {
+         printf("SARG: Maybe you have a broken record or garbage in your %s file.\n",lfile);
+         exit(1);
+      }
       strcpy(text[record],warea);
 
       if(langcode)