+Sai On 4/13/2020 2:43 AM, David Binderman wrote: > Hello there, > > Source code is > > while (fgets(temp, 1024, fp)) { > > but > > char *token_array[8], temp[512]; > > Use of compiler flag -D_FORTIFY_SOURCE=2 would have found the problem. > For example: > > # include <stdio.h> > > extern void g( int); > > void > f( FILE * fp) > { > char buf[ 100]; > > while (fgets( buf, 200, fp) != 0) > { > g( 1); > } > } > > gives > > $ /home/dcb/gcc/results/bin/gcc -c -g -O2 -D_FORTIFY_SOURCE=2 apr13c.cc > In file included from /usr/include/stdio.h:867, > from apr13c.cc:2: > In function ‘char* fgets(char*, int, FILE*)’, > inlined from ‘void f(FILE*)’ at apr13c.cc:11:14: > /usr/include/bits/stdio2.h:263:26: warning: call to ‘__fgets_chk_warn’ declared with attribute warning: fgets called with bigger size than length of destination buffer [-Wattribute-warning] > > I suggest switch on compiler flag -D_FORTIFY_SOURCE=2 in > all development builds. > Thank you very much for catching this David. Sai: could you include this fix in your upcoming series of fixes? Using the pattern of "fgets(buf, sizeof(buf), ...)" instead of hard coding the size should be helpful here. Reinette