Ticket #162: jabberd2_dont_reset_whole_buffer.diff

File jabberd2_dont_reset_whole_buffer.diff, 1.2 KB (added by markdoliner, 14 months ago)
  • util/log.c

     
    104104{ 
    105105    va_list ap; 
    106106    char *pos, message[MAX_LOG_LINE+1]; 
    107     int sz; 
     107    int sz, len; 
    108108    time_t t; 
    109109 
    110     memset(&message, '\0', MAX_LOG_LINE+1); 
    111  
    112110    if(log->type == log_SYSLOG) { 
    113111        va_start(ap, msgfmt); 
    114112#ifdef HAVE_VSYSLOG 
    115113        vsyslog(level, msgfmt, ap); 
    116114#else 
    117         vsnprintf(message, MAX_LOG_LINE, msgfmt, ap); 
     115        len = vsnprintf(message, MAX_LOG_LINE, msgfmt, ap); 
     116        if (len > MAX_LOG_LINE) 
     117            message[MAX_LOG_LINE] = '\0'; 
     118        else 
     119            message[len] = '\0'; 
    118120        syslog(level, "%s", message); 
    119121#endif 
    120122        va_end(ap); 
     
    132134    pos[sz-1]=' '; 
    133135 
    134136    /* insert the header */ 
    135     snprintf(message, MAX_LOG_LINE, "%s[%s] ", pos, _log_level[level]); 
     137    len = snprintf(message, MAX_LOG_LINE, "%s[%s] ", pos, _log_level[level]); 
     138    if (len > MAX_LOG_LINE) 
     139        message[MAX_LOG_LINE] = '\0'; 
     140    else 
     141        message[len] = '\0'; 
    136142 
    137143    /* find the end and attach the rest of the msg */ 
    138144    for (pos = message; *pos != '\0'; pos++); /*empty statement */