Let's code this straighforwadly, and just allocate the string as we need
it, instead of doing pre-allocation.
This is not performance sensitive, as this will almost certainly just
return /dev/tty1 after the first transition.
static int find_source_vc(char **ret_path, unsigned *ret_idx) {
int r, err = 0;
- _cleanup_free_ char *path = new(char, sizeof("/dev/tty63"));
- if (!path)
- return log_oom();
+ assert(ret_path);
+ assert(ret_idx);
for (unsigned i = 1; i <= 63; i++) {
_cleanup_close_ int fd = -EBADF;
+ _cleanup_free_ char *path = NULL;
r = verify_vc_allocation(i);
if (r < 0) {
continue;
}
- sprintf(path, "/dev/tty%u", i);
+ if (asprintf(&path, "/dev/tty%u", i) < 0)
+ return log_oom();
+
fd = open_terminal(path, O_RDWR|O_CLOEXEC|O_NOCTTY);
if (fd < 0) {
if (!err)