Bug 891938 - [conman] conmand fails to start up when timezone set to GMT-1, WARST, EASST & others
Summary: [conman] conmand fails to start up when timezone set to GMT-1, WARST, EASST &...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: conman
Version: 6.5
Hardware: All
OS: All
unspecified
high
Target Milestone: rc
: ---
Assignee: Denys Vlasenko
QA Contact: Miroslav Hradílek
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-01-04 15:13 UTC by Mark Salyzyn
Modified: 2013-11-21 22:02 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2013-11-21 22:02:39 UTC


Attachments (Terms of Use)
Proposed patch (1.28 KB, patch)
2013-02-20 12:29 UTC, Denys Vlasenko
no flags Details | Diff


Links
System ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2013:1677 normal SHIPPED_LIVE conman bug fix and enhancement update 2013-11-20 21:52:42 UTC

Description Mark Salyzyn 2013-01-04 15:13:35 UTC
Description of problem:
As noted in https://code.google.com/p/conman/issues/detail?id=16
conman fails to start up on some timezones.

Version-Release number of selected component (if applicable):
conman-0.2.5-2.4.el6

How reproducible:
Easy

Steps to Reproduce:
1. /usr/share/zoneinfo/Etc/GMT-1 used for /etc/localtime
2. startup of command fails

NB: informed customer to switch to Europe/Vienna as workaround.
  
Actual results:
conman startup notices in log:
NOTICE: Starting ConMan daemon 0.2.5 (pid 86513)
INFO: Open file limit set to 1024
ERROR: strftime() failed

Expected results:
expected conman deamon to function

Additional info:

The problem is create_long_time_string(time_t t) has const int len set to 25, when it should be 29 (or higher) to deal with all known current timezone codes. Recommend it be set to 32 to provide an engineering margin.

in util_str.c:
{code}
char * create_long_time_string(time_t t)
{
    char *p;
    struct tm tm;
    const int len = 25;                 /* YYYY-MM-DD HH:MM:SS ZONE + NUL */

    if (!(p = malloc(len))) {
        out_of_memory();
    }
    get_localtime(&t, &tm);

    if (strftime(p, len, "%Y-%m-%d %H:%M:%S %Z", &tm) == 0) {
        log_err(0, "strftime() failed");
    }
    return(p);
}
{code}

Comment 2 Mark Salyzyn 2013-01-07 16:01:28 UTC
NB: https://code.google.com/p/conman/issues/detail?id=16 the fix accepted by the author was to change const int len = 25 to 32.

Comment 3 Denys Vlasenko 2013-02-20 12:29:14 UTC
Created attachment 700004 [details]
Proposed patch

Test build with this patch was successful:

https://brewweb.devel.redhat.com/taskinfo?taskID=5425688

Comment 8 errata-xmlrpc 2013-11-21 22:02:39 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2013-1677.html


Note You need to log in before you can comment on or make changes to this bug.