[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 09/12] mini-os: use file_ops and get_file_from_fd() for console
On 11/01/2022 15:12, Juergen Gross wrote: > +static int savefile_write(int fd, const void *buf, size_t nbytes) > +{ > + int ret = 0, tot = nbytes; > + struct file *file = get_file_from_fd(fd); > + > + while ( nbytes > 0 ) > + { > + ret = xencons_ring_send(file->dev, (char *)buf, nbytes); > + nbytes -= ret; > + buf = (char *)buf + ret; > + } > + > + return tot - nbytes; > +} > + > +static int console_write(int fd, const void *buf, size_t nbytes) > +{ > + struct file *file = get_file_from_fd(fd); > + > + console_print(file->dev, (char *)buf, nbytes); I've just noticed this while committing the previous series, and I know it is a preexisting bug, but the casts here are utterly unsafe, because they're casting away constness. console_print() is easy to fix, and just requires a prototype adjustment. That said, it also desperately also needs to fix 'int length' to size_t to avoid problems with negative length VLAs on the stack. xencons_ring_send() already takes const char *, so I'm pretty sure you can just drop the casts here. It too ought to not truncate size_t bytes to "unsigned". ~Andrew
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |