From: Zdeněk Salvet Date: Wed, 29 Aug 2007 15:47:18 +0000 (+0000) Subject: Handle holes in EventCode enum gracefully in to_string conversions. X-Git-Tag: glite-lb-client_R_3_0_1_1~15 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=d0992bc9c424b331bf07cb424b78864cfb750f6b;p=jra1mw.git Handle holes in EventCode enum gracefully in to_string conversions. --- diff --git a/org.glite.lb.client/src/Event.cpp.T b/org.glite.lb.client/src/Event.cpp.T index e7faae3..e7d0f2e 100644 --- a/org.glite.lb.client/src/Event.cpp.T +++ b/org.glite.lb.client/src/Event.cpp.T @@ -389,12 +389,21 @@ std::vector > const & Event::getAttrs(voi const std::string Event::getEventName(Type type) { + char *s; + if(type < 0 || type >= TYPE_MAX) { STACK_ADD; throw(Exception(EXCEPTION_MANDATORY, EINVAL, "invalid event type")); } - return std::string(edg_wll_EventToString(edg_wll_EventCode(type))); + s = edg_wll_EventToString(edg_wll_EventCode(type)); + if (!s) { + STACK_ADD; + throw(Exception(EXCEPTION_MANDATORY, EINVAL, "invalid event type")); + } + std::string ret(s); + free(s); + return ret; } diff --git a/org.glite.lb.common/src/events.c.T b/org.glite.lb.common/src/events.c.T index 7916339..75939d1 100644 --- a/org.glite.lb.common/src/events.c.T +++ b/org.glite.lb.common/src/events.c.T @@ -76,7 +76,7 @@ edg_wll_EventCode edg_wll_StringToEvent(const char *name) char *edg_wll_EventToString(edg_wll_EventCode event) { if ((int)event < 0 || event >= sizeof(eventNames)/sizeof(eventNames[0])) return NULL; - return strdup(eventNames[event]); + return eventNames[event] ? strdup(eventNames[event]) : NULL; }