summaryrefslogtreecommitdiff
path: root/libkmod/libkmod-elf.c
diff options
context:
space:
mode:
authorGustavo Sverzut Barbieri <barbieri@profusion.mobi>2011-12-19 17:42:34 -0200
committerGustavo Sverzut Barbieri <barbieri@profusion.mobi>2011-12-19 18:32:58 -0200
commit47a0ef601dc70c88b9008e35a688c900e4ebcfd4 (patch)
treefe28bf5447060a933f1466bf32a14ee942c4334a /libkmod/libkmod-elf.c
parent515ec7960bf22c52e9e5d27c23a5dadad785a9da (diff)
downloadkmod-47a0ef601dc70c88b9008e35a688c900e4ebcfd4.tar.gz
elf: do not output empty strings.
Diffstat (limited to 'libkmod/libkmod-elf.c')
-rw-r--r--libkmod/libkmod-elf.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/libkmod/libkmod-elf.c b/libkmod/libkmod-elf.c
index 0cb12ed..85395dc 100644
--- a/libkmod/libkmod-elf.c
+++ b/libkmod/libkmod-elf.c
@@ -418,9 +418,16 @@ int kmod_elf_get_strings(const struct kmod_elf *elf, const char *section, char *
if (size <= 1)
return 0;
+ last = 0;
for (i = 0, count = 0; i < size; i++) {
- if (strings[i] == '\0')
+ if (strings[i] == '\0') {
+ if (last == i) {
+ last = i + 1;
+ continue;
+ }
count++;
+ last = i + 1;
+ }
}
if (strings[i - 1] != '\0')
count++;
@@ -434,6 +441,10 @@ int kmod_elf_get_strings(const struct kmod_elf *elf, const char *section, char *
for (i = 0, count = 0; i < size; i++) {
if (strings[i] == '\0') {
size_t slen = i - last;
+ if (last == i) {
+ last = i + 1;
+ continue;
+ }
a[count] = itr;
memcpy(itr, strings + last, slen);
itr[slen] = '\0';