X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd%2Fsd-id128%2Fsd-id128.c;h=f0ffedc38b39c9c363a4a1b80ab2760a77108f33;hb=a6dcc7e5924f9c27d3e9c6560a448b02ec28b65f;hp=a1e44e6d19df927b6fa371aa968483aa44b60176;hpb=0f0e240cb8625d832e760ef32ed772e21c316905;p=elogind.git diff --git a/src/libsystemd/sd-id128/sd-id128.c b/src/libsystemd/sd-id128/sd-id128.c index a1e44e6d1..f0ffedc38 100644 --- a/src/libsystemd/sd-id128/sd-id128.c +++ b/src/libsystemd/sd-id128/sd-id128.c @@ -108,9 +108,9 @@ _public_ int sd_id128_get_machine(sd_id128_t *ret) { static thread_local bool saved_machine_id_valid = false; _cleanup_close_ int fd = -1; char buf[33]; - ssize_t k; unsigned j; sd_id128_t t; + int r; assert_return(ret, -EINVAL); @@ -123,13 +123,9 @@ _public_ int sd_id128_get_machine(sd_id128_t *ret) { if (fd < 0) return -errno; - k = loop_read(fd, buf, 33, false); - if (k < 0) - return (int) k; - - if (k != 33) - return -EIO; - + r = loop_read_exact(fd, buf, 33, false); + if (r < 0) + return r; if (buf[32] !='\n') return -EIO; @@ -157,10 +153,10 @@ _public_ int sd_id128_get_boot(sd_id128_t *ret) { static thread_local bool saved_boot_id_valid = false; _cleanup_close_ int fd = -1; char buf[36]; - ssize_t k; unsigned j; sd_id128_t t; char *p; + int r; assert_return(ret, -EINVAL); @@ -173,21 +169,21 @@ _public_ int sd_id128_get_boot(sd_id128_t *ret) { if (fd < 0) return -errno; - k = loop_read(fd, buf, 36, false); - if (k < 0) - return (int) k; - - if (k != 36) - return -EIO; + r = loop_read_exact(fd, buf, 36, false); + if (r < 0) + return r; for (j = 0, p = buf; j < 16; j++) { int a, b; - if (p >= buf + k) + if (p >= buf + 35) return -EIO; - if (*p == '-') + if (*p == '-') { p++; + if (p >= buf + 35) + return -EIO; + } a = unhexchar(p[0]); b = unhexchar(p[1]); @@ -219,7 +215,7 @@ _public_ int sd_id128_randomize(sd_id128_t *ret) { /* Turn this into a valid v4 UUID, to be nice. Note that we * only guarantee this for newly generated UUIDs, not for - * pre-existing ones.*/ + * pre-existing ones. */ *ret = make_v4_uuid(t); return 0;