From deedd5c26e40848b3003d1b9d98946d9dff55bc3 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Sun, 15 Jun 2025 21:25:34 +0200 Subject: [PATCH] terminal-util: modernize ptsname_malloc a bit --- src/basic/terminal-util.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index 5f7b6703891..13337b80564 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -1583,33 +1583,25 @@ int get_ctty(pid_t pid, dev_t *ret_devnr, char **ret) { } int ptsname_malloc(int fd, char **ret) { - size_t l = 100; - assert(fd >= 0); assert(ret); - for (;;) { - char *c; + for (size_t l = 50;;) { + _cleanup_free_ char *c = NULL; c = new(char, l); if (!c) return -ENOMEM; - if (ptsname_r(fd, c, l) == 0) { - *ret = c; + if (ptsname_r(fd, c, l) >= 0) { + *ret = TAKE_PTR(c); return 0; } - if (errno != ERANGE) { - free(c); + if (errno != ERANGE) return -errno; - } - - free(c); - if (l > SIZE_MAX / 2) + if (!MUL_ASSIGN_SAFE(&l, 2)) return -ENOMEM; - - l *= 2; } } -- 2.47.3