[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Lost] [Patch] LostIO: Checks in io_write
Vermutlich hält LostIO noch genug ähnliche Kaputtheiten auf Lager, aber
vterm sollte _wirklich_ nicht abstürzen, wenn man ein Programm laufen
läßt, das gegen eine ältere ABI gebaut ist.
Ich spende für den Anfang einen Nullpointer- und einen Pufferlängencheck.
Index: src/modules/lib/lostio/handler.c
===================================================================
--- src/modules/lib/lostio/handler.c (Revision 606)
+++ src/modules/lib/lostio/handler.c (Arbeitskopie)
@@ -225,10 +225,24 @@
void* write_data;
if (write_request->shared_mem_id == 0) {
write_data = write_request->data;
- } else {
+
+ // Laenge pruefen
+ if (write_request->blocksize * write_request->blockcount >
+ data_size - offsetof(io_write_request_t, data))
+ {
+ rpc_send_dword_response(pid, correlation_id, (dword)-1);
+ return;
+ }
+ } else {
write_data = open_shared_memory(write_request->shared_mem_id);
+ // TODO Groesse des Puffers pruefen
}
+ if (write_data == NULL) {
+ rpc_send_dword_response(pid, correlation_id, (dword)-1);
+ return;
+ }
+
size_t result = typehandle->write(filehandle, write_request->blocksize, write_request->blockcount, write_data);
if (write_request->shared_mem_id != 0) {