From: Mike Yuan Date: Sun, 15 Jun 2025 19:25:34 +0000 (+0200) Subject: terminal-util: modernize ptsname_malloc a bit X-Git-Tag: v258-rc1~314 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=deedd5c26e40848b3003d1b9d98946d9dff55bc3;p=thirdparty%2Fsystemd.git terminal-util: modernize ptsname_malloc a bit --- 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; } }