while (fgets(line, sizeof(line), file)) {
struct maps *map = alloc_map();
unsigned long start, end;
- char name[1024];
+ int skip;
if (map == NULL)
return 0;
if (the_map == NULL)
the_map = map;
- ret = sscanf(line, "%lx-%lx %*s %*s %*s %*s %s",
- &start, &end, name);
+ ret = sscanf(line, "%lx-%lx %*s %*s %*s %*s %n",
+ &start, &end, &skip);
if (ret < 2) {
printf("Error reading input: %s\n", line);
map->pid = pid;
map->tid = tid;
- if (ret >= 3)
- strncpy(map->name, name, sizeof(map->name));
+ strncpy(map->name, line + skip, sizeof(map->name));
+
+ /* zero out the newline */
+ map->name[MAX(strlen(map->name) - 1, 0)] = '\0';
list_add_tail(&map->list, &the_map->list);
}