Bug 891938 - [conman] conmand fails to start up when timezone set to GMT-1, WARST, EASST & others
[conman] conmand fails to start up when timezone set to GMT-1, WARST, EASST &...
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: conman (Show other bugs)
6.5
All All
unspecified Severity high
: rc
: ---
Assigned To: Denys Vlasenko
Miroslav Hradílek
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2013-01-04 10:13 EST by Mark Salyzyn
Modified: 2013-11-21 17:02 EST (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2013-11-21 17:02:39 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


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

  None (edit)
Description Mark Salyzyn 2013-01-04 10:13:35 EST
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 11:01:28 EST
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 07:29:14 EST
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 17:02:39 EST
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.