On Thu, Dec 4, 2025 at 7:42 PM Vladimir Sementsov-Ogievskiy < [email protected]> wrote:
> We'll use it in following commit. > > Note the bonus: stop use blind strcpy(). > > Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]> > Reviewed-by: Marc-André Lureau <[email protected]> > --- > chardev/char-pty.c | 19 +++++++++---------- > 1 file changed, 9 insertions(+), 10 deletions(-) > > diff --git a/chardev/char-pty.c b/chardev/char-pty.c > index 9e26e97baf..a582aa7bc7 100644 > --- a/chardev/char-pty.c > +++ b/chardev/char-pty.c > @@ -43,6 +43,7 @@ struct PtyChardev { > int connected; > GSource *timer_src; > char *path; > + char *pty_name; > }; > typedef struct PtyChardev PtyChardev; > > @@ -303,7 +304,7 @@ static void cfmakeraw (struct termios *termios_p) > #endif > > /* like openpty() but also makes it raw; return master fd */ > -static int qemu_openpty_raw(int *aslave, char *pty_name) > +static int qemu_openpty_raw(int *aslave, char **pty_name) > { > int amaster; > struct termios tty; > @@ -324,9 +325,7 @@ static int qemu_openpty_raw(int *aslave, char > *pty_name) > cfmakeraw(&tty); > tcsetattr(*aslave, TCSAFLUSH, &tty); > > - if (pty_name) { > - strcpy(pty_name, q_ptsname(amaster)); > - } > + *pty_name = g_strdup(q_ptsname(amaster)); > > return amaster; > } > @@ -335,11 +334,12 @@ static bool pty_chr_open(Chardev *chr, > ChardevBackend *backend, Error **errp) > { > PtyChardev *s; > int master_fd, slave_fd; > - char pty_name[PATH_MAX]; > char *name; > char *path = backend->u.pty.data->path; > > - master_fd = qemu_openpty_raw(&slave_fd, pty_name); > + s = PTY_CHARDEV(chr); > + > + master_fd = qemu_openpty_raw(&slave_fd, &s->pty_name); > if (master_fd < 0) { > error_setg_errno(errp, errno, "Failed to create PTY"); > return false; > @@ -351,11 +351,10 @@ static bool pty_chr_open(Chardev *chr, > ChardevBackend *backend, Error **errp) > return false; > } > > - chr->filename = g_strdup_printf("pty:%s", pty_name); > + chr->filename = g_strdup_printf("pty:%s", s->pty_name); > qemu_printf("char device redirected to %s (label %s)\n", > - pty_name, chr->label); > + s->pty_name, chr->label); > > - s = PTY_CHARDEV(chr); > s->ioc = QIO_CHANNEL(qio_channel_file_new_fd(master_fd)); > name = g_strdup_printf("chardev-pty-%s", chr->label); > qio_channel_set_name(s->ioc, name); > @@ -364,7 +363,7 @@ static bool pty_chr_open(Chardev *chr, ChardevBackend > *backend, Error **errp) > > /* create symbolic link */ > if (path) { > - int res = symlink(pty_name, path); > + int res = symlink(s->pty_name, path); > > if (res != 0) { > error_setg_errno(errp, errno, "Failed to create PTY symlink"); > -- > 2.48.1 > >
