Ecore_Con_Event_Server_Data *ev;
E_Event_Acpi *acpi_event;
int sig, status, i, done = 0;
- char device[1024], bus[1024], *sdata;
+ char device[1024], bus[1024], *sdata, *stmp;
const char *str, *p;
ev = event;
+ if ((!ev->data) || (ev->size < 1)) return ECORE_CALLBACK_PASS_ON;
+
/* write out actual acpi received data to stdout for debugging
res = fwrite(ev->data, ev->size, 1, stdout);
*/
* a blob of data. copy to string and 0 byte terminate it so it can be
* string-swizzled/parsed etc. */
if (!acpibuf) acpibuf = eina_strbuf_new();
- eina_strbuf_append_n(acpibuf, ev->data, ev->size);
+ stmp = alloca(ev->size + 1);
+ memcpy(stmp, ev->data, ev->size);
+ stmp[ev->size] = 0;
+ eina_strbuf_append_n(acpibuf, stmp, ev->size);
str = eina_strbuf_string_get(acpibuf);
p = strchr(str, '\n');
if (!p) return ECORE_CALLBACK_PASS_ON;