#include <unistd.h>
#include "lttngerr.h"
-#include "libkernelctl.h"
+#include "kernelctl.h"
#include "kernel-ctl.h"
/*
fp = fdopen(fd, "r");
if (fp == NULL) {
perror("kernel tracepoint list fdopen");
- goto error;
+ goto error_fp;
}
/*
while ((size = fscanf(fp, "event { name = %m[^;]; };%n\n", &event, &pos)) == 1) {
if (count > nbmem) {
- DBG("Reallocating event list from %zd to %zd bytes", nbmem,
+ DBG("Reallocating event list from %zu to %zu bytes", nbmem,
nbmem + KERNEL_EVENT_LIST_SIZE);
/* Adding the default size again */
nbmem += KERNEL_EVENT_LIST_SIZE;
elist = realloc(elist, nbmem);
if (elist == NULL) {
perror("realloc list events");
- goto error;
+ count = -ENOMEM;
+ goto end;
}
}
- strncpy(elist[count].name, event, strlen(event));
+ strncpy(elist[count].name, event, LTTNG_SYMBOL_NAME_LEN);
+ elist[count].name[LTTNG_SYMBOL_NAME_LEN - 1] = '\0';
count++;
}
*events = elist;
-
- DBG("Kernel list events done (%ld events)", count);
-
+ DBG("Kernel list events done (%zu events)", count);
+end:
+ fclose(fp); /* closes both fp and fd */
return count;
+error_fp:
+ close(fd);
error:
return -1;
}