[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 12.01.22 12:23, Andrew Cooper wrote: 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". Okay, will do that. Juergen Attachment:
OpenPGP_0xB0DE9DD628BF132F.asc Attachment:
OpenPGP_signature
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |