Date: Wed, 11 Aug 2004 12:23:53 +0200 (MEST) From: Mipam <mipam@ibb.net> To: Giorgos Keramidas <keramida@ceid.upatras.gr> Cc: freebsd-questions@freebsd.org Subject: Re: localtime question Message-ID: <Pine.BSO.4.56.0408111219440.11899@ux11.ltcm.net> In-Reply-To: <20040811094244.GA30843@orion.daedalusnetworks.priv> References: <20040810171119.GA26303@orion.daedalusnetworks.priv> <Pine.BSO.4.56.0408111039230.11899@ux11.ltcm.net> <20040811094244.GA30843@orion.daedalusnetworks.priv>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 11 Aug 2004, Giorgos Keramidas wrote: > On 2004-08-11 10:44, Mipam <mipam@ibb.net> wrote: > > > You'd have to use strftime() and a local buffer for that. > > > > I found an example and adjusted it: > > > > #include <time.h> > > #include <stdio.h> > > > > int main() > > { > > struct tm *ptr; > > time_t tm; > > char str[60]; > > char str2[60]; > > char str3[60]; > > > > tm = time(NULL)-86400; > > ptr = localtime(&tm); > > strftime(str ,100 , "%d",ptr); > > strftime(str2 ,100 , "%m",ptr); > > strftime(str3 ,100 , "%Y",ptr); > > printf("%s %s %s\n",str3,str2,str); > > > > return 0; > > } > > > > This runs just fine: 2004 08 10 > > I dont know what the 100 is good for? > > It's the size of the buffer that strftime() gets as the first argument. > In this case 100 is a bug waiting to happen, because the buffers are > allocated with only 60 bytes of data. The manpage of strftime() > explains what each argument is supposed to be. Okay, so i should do: strftime(str ,60 , "%d",ptr); Could i do a check, i mean: ptr = localtime(&tm); here i assign the output of locatime... to ptr and ptr is a string of 60 characters, what if for some reason localtime(&tm) exceeds the 60 characters, then i have a nice buffer overflow. Can i do a check before doing: ptr = localtime(&tm); whether localtime(&tm) does not exceed 60 characters? When i done that check, i dont need an additional check in the strftime, where also 60 is assigned. Bye, Mipam.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSO.4.56.0408111219440.11899>