qopen-in-vm: fix read overflow
That one would also send more data to the other VM that what we intended: the start of the env var data (which in similar code on my host includes the GPG agent socket path, XDG session cookie, and more. The other side expects a fixed size though, so pad with NULs. Interestingly, the original code was not vulnerable as it was callocing enough space.
This commit is contained in:
parent
5af6f0ff7f
commit
38c0ea3128
@ -15,6 +15,7 @@
|
||||
void send_file(char *fname)
|
||||
{
|
||||
char *base;
|
||||
char sendbuf[DVM_FILENAME_SIZE];
|
||||
int fd = open(fname, O_RDONLY);
|
||||
if (fd < 0)
|
||||
gui_fatal("open %s", fname);
|
||||
@ -25,7 +26,8 @@ void send_file(char *fname)
|
||||
base++;
|
||||
if (strlen(base) >= DVM_FILENAME_SIZE)
|
||||
base += strlen(base) - DVM_FILENAME_SIZE + 1;
|
||||
if (!write_all(1, base, DVM_FILENAME_SIZE))
|
||||
strncpy(sendbuf,base,DVM_FILENAME_SIZE); /* fills out with NULs */
|
||||
if (!write_all(1, sendbuf, DVM_FILENAME_SIZE))
|
||||
gui_fatal("send filename to dispVM");
|
||||
if (!copy_fd_all(1, fd))
|
||||
gui_fatal("send file to dispVM");
|
||||
|
Loading…
Reference in New Issue
Block a user