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>
