diff --git a/src/sbbs3/scfg/scfg.c b/src/sbbs3/scfg/scfg.c index daf70cba116f4f9bd0eac91163011e44c61e119e..c7f1841c3238ace756694c0e0c970058d499912c 100644 --- a/src/sbbs3/scfg/scfg.c +++ b/src/sbbs3/scfg/scfg.c @@ -1991,12 +1991,19 @@ char* prep_code(char *str) char tmp[1024]; int i,j; - for(i=j=0;str[i];i++) - if(str[i]>' ' && str[i]!='*' && str[i]!='?' + for(i=j=0;str[i] && i<sizeof(tmp);i++) + if(str[i]>' ' && !(str[i]&0x80) && str[i]!='*' && str[i]!='?' && strchr(ILLEGAL_FILENAME_CHARS,str[i])==NULL) tmp[j++]=str[i]; tmp[j]=0; strcpy(str,tmp); + if(j>=LEN_CODE) { /* Extra chars? Strip symbolic chars */ + for(i=j=0;str[i];i++) + if(isalnum(str[i])) + tmp[j++]=str[i]; + tmp[j]=0; + strcpy(str,tmp); + } return(str); }