diff options
author | root <root@rshg054.dnsready.net> | 2012-01-15 23:14:56 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-01-15 23:14:56 +0000 |
commit | 0b31296d95d2e0f18abf69f30d0946e3a1f35672 (patch) | |
tree | d7348183933db628f7b6be4d50c4c763c50cd71e /testing/systemd/0001-tmpfiles-fix-parsing-of-proc-net-unix-on-32Bit-machi.patch | |
parent | 2d4aa7f882dac8abb34e973655326c93f584f31f (diff) |
Sun Jan 15 23:14:55 UTC 2012
Diffstat (limited to 'testing/systemd/0001-tmpfiles-fix-parsing-of-proc-net-unix-on-32Bit-machi.patch')
-rw-r--r-- | testing/systemd/0001-tmpfiles-fix-parsing-of-proc-net-unix-on-32Bit-machi.patch | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/testing/systemd/0001-tmpfiles-fix-parsing-of-proc-net-unix-on-32Bit-machi.patch b/testing/systemd/0001-tmpfiles-fix-parsing-of-proc-net-unix-on-32Bit-machi.patch new file mode 100644 index 000000000..456d679ed --- /dev/null +++ b/testing/systemd/0001-tmpfiles-fix-parsing-of-proc-net-unix-on-32Bit-machi.patch @@ -0,0 +1,87 @@ +From fdcad0c25579a60061b1fda956686e878a80faef Mon Sep 17 00:00:00 2001 +From: Lennart Poettering <lennart@poettering.net> +Date: Wed, 11 Jan 2012 22:07:35 +0100 +Subject: [PATCH] tmpfiles: fix parsing of /proc/net/unix on 32Bit machines + +Tracked down by Michael Meeks +--- + src/tmpfiles.c | 30 ++++++++++++++++++++---------- + 1 files changed, 20 insertions(+), 10 deletions(-) + +diff --git a/src/tmpfiles.c b/src/tmpfiles.c +index 19a7c08..44e5c9d 100644 +--- a/src/tmpfiles.c ++++ b/src/tmpfiles.c +@@ -117,41 +117,50 @@ static void load_unix_sockets(void) { + /* We maintain a cache of the sockets we found in + * /proc/net/unix to speed things up a little. */ + +- if (!(unix_sockets = set_new(string_hash_func, string_compare_func))) ++ unix_sockets = set_new(string_hash_func, string_compare_func); ++ if (!unix_sockets) + return; + +- if (!(f = fopen("/proc/net/unix", "re"))) ++ f = fopen("/proc/net/unix", "re"); ++ if (!f) + return; + +- if (!(fgets(line, sizeof(line), f))) ++ /* Skip header */ ++ if (!fgets(line, sizeof(line), f)) + goto fail; + + for (;;) { + char *p, *s; + int k; + +- if (!(fgets(line, sizeof(line), f))) ++ if (!fgets(line, sizeof(line), f)) + break; + + truncate_nl(line); + +- if (strlen(line) < 53) ++ p = strchr(line, ':'); ++ if (!p) ++ continue; ++ ++ if (strlen(p) < 37) + continue; + +- p = line + 53; ++ p += 37; + p += strspn(p, WHITESPACE); +- p += strcspn(p, WHITESPACE); ++ p += strcspn(p, WHITESPACE); /* skip one more word */ + p += strspn(p, WHITESPACE); + + if (*p != '/') + continue; + +- if (!(s = strdup(p))) ++ s = strdup(p); ++ if (!s) + goto fail; + + path_kill_slashes(s); + +- if ((k = set_put(unix_sockets, s)) < 0) { ++ k = set_put(unix_sockets, s); ++ if (k < 0) { + free(s); + + if (k != -EEXIST) +@@ -1059,7 +1068,8 @@ int main(int argc, char *argv[]) { + Item *i; + Iterator iterator; + +- if ((r = parse_argv(argc, argv)) <= 0) ++ r = parse_argv(argc, argv); ++ if (r <= 0) + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; + + log_set_target(LOG_TARGET_AUTO); +-- +1.7.8.3 + |