X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fsd-id128.c;h=4286ae7d146027b40b03378151387d8f8d0a4a1e;hb=68fb08920b2162b48cf0fa8dd98b021327b42896;hp=f5e0432a3f9c6835f8d27aa9e9a070af94bda22c;hpb=689b9a22f7fa89686b2b5240b7ee9f449dea5630;p=elogind.git diff --git a/src/sd-id128.c b/src/sd-id128.c index f5e0432a3..4286ae7d1 100644 --- a/src/sd-id128.c +++ b/src/sd-id128.c @@ -6,16 +6,16 @@ Copyright 2011 Lennart Poettering systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. systemd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . ***/ @@ -24,13 +24,15 @@ #include #include "sd-id128.h" + #include "util.h" #include "macro.h" -char *sd_id128_to_string(sd_id128_t id, char s[33]) { +_public_ char *sd_id128_to_string(sd_id128_t id, char s[33]) { unsigned n; - assert(s); + if (!s) + return NULL; for (n = 0; n < 16; n++) { s[n*2] = hexchar(id.bytes[n] >> 4); @@ -42,12 +44,14 @@ char *sd_id128_to_string(sd_id128_t id, char s[33]) { return s; } -int sd_id128_from_string(const char s[33], sd_id128_t *ret) { +_public_ int sd_id128_from_string(const char s[33], sd_id128_t *ret) { unsigned n; sd_id128_t t; - assert(s); - assert(ret); + if (!s) + return -EINVAL; + if (!ret) + return -EINVAL; for (n = 0; n < 16; n++) { int a, b; @@ -70,7 +74,7 @@ int sd_id128_from_string(const char s[33], sd_id128_t *ret) { return 0; } -sd_id128_t sd_id128_make_v4_uuid(sd_id128_t id) { +static sd_id128_t make_v4_uuid(sd_id128_t id) { /* Stolen from generate_random_uuid() of drivers/char/random.c * in the kernel sources */ @@ -83,7 +87,7 @@ sd_id128_t sd_id128_make_v4_uuid(sd_id128_t id) { return id; } -int sd_id128_get_machine(sd_id128_t *ret) { +_public_ int sd_id128_get_machine(sd_id128_t *ret) { static __thread sd_id128_t saved_machine_id; static __thread bool saved_machine_id_valid = false; int fd; @@ -92,6 +96,9 @@ int sd_id128_get_machine(sd_id128_t *ret) { unsigned j; sd_id128_t t; + if (!ret) + return -EINVAL; + if (saved_machine_id_valid) { *ret = saved_machine_id; return 0; @@ -129,7 +136,7 @@ int sd_id128_get_machine(sd_id128_t *ret) { return 0; } -int sd_id128_get_boot(sd_id128_t *ret) { +_public_ int sd_id128_get_boot(sd_id128_t *ret) { static __thread sd_id128_t saved_boot_id; static __thread bool saved_boot_id_valid = false; int fd; @@ -139,6 +146,9 @@ int sd_id128_get_boot(sd_id128_t *ret) { sd_id128_t t; char *p; + if (!ret) + return -EINVAL; + if (saved_boot_id_valid) { *ret = saved_boot_id; return 0; @@ -181,12 +191,13 @@ int sd_id128_get_boot(sd_id128_t *ret) { return 0; } -int sd_id128_randomize(sd_id128_t *ret) { +_public_ int sd_id128_randomize(sd_id128_t *ret) { int fd; ssize_t k; sd_id128_t t; - assert(ret); + if (!ret) + return -EINVAL; fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC|O_NOCTTY); if (fd < 0) @@ -205,6 +216,6 @@ int sd_id128_randomize(sd_id128_t *ret) { * only guarantee this for newly generated UUIDs, not for * pre-existing ones.*/ - *ret = sd_id128_make_v4_uuid(t); + *ret = make_v4_uuid(t); return 0; }