Branch: Tag:

2002-10-03

2002-10-03 16:04:53 by Martin Stjernholm <mast@lysator.liu.se>

Fixed missing checks for NULL from gmtime(2), localtime(2) and ctime(2)
which could cause segfaults. E.g. on NT they don't handle negative time
stamps.

Rev: src/builtin.cmod:1.28
Rev: src/modules/HTTPLoop/log.c:1.10
Rev: src/modules/Oracle/oracle.c:1.60
Rev: src/modules/spider/discdate.c:1.9

1:   /* -*- c -*- -  * $Id: builtin.cmod,v 1.27 2002/04/24 15:45:11 grubba Exp $ +  * $Id: builtin.cmod,v 1.28 2002/10/03 16:04:53 mast Exp $    */      #include "global.h"
116:   //! Convert the output from a previous call to @[time()] into a readable   //! string containing the current year, month, day and time.   //! + //! Like @[localtime], this function might return zero if the ctime(2) + //! call failed on the system. It's platform dependent what time + //! ranges that function can handle, e.g. Windows doesn't handle a + //! negative @[timestamp]. + //!   //! @seealso   //! @[time()], @[localtime()], @[mktime()], @[gmtime()]   //!
124:    optflags OPT_TRY_OPTIMIZE;   {    time_t i=(time_t)timestamp; -  RETURN make_shared_string(ctime(&i)); +  char *s = ctime (&i); +  if (!s) { +  pop_stack(); +  push_int (0); +  return;    } -  +  RETURN make_shared_string(s); + }      //! Make a mapping from two arrays.   //!