X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fptr_valid%2Fptr_valid.c;h=dc61dd27cbc1fbd46a06e73ad25d4c1bb6fb9848;hb=d16685e327c01b79bf4b49793f56cbe3e33ff179;hp=ef95d34f39c7a145a2b0c3621c8c764ea65d140b;hpb=1086d8cef04f90f6ba74a35fdc9a44fe615518a8;p=ccan diff --git a/ccan/ptr_valid/ptr_valid.c b/ccan/ptr_valid/ptr_valid.c index ef95d34f..dc61dd27 100644 --- a/ccan/ptr_valid/ptr_valid.c +++ b/ccan/ptr_valid/ptr_valid.c @@ -246,9 +246,14 @@ static bool check_with_child(struct ptr_valid_batch *batch, return false; } - write(batch->to_child, &p, sizeof(p)); - write(batch->to_child, &size, sizeof(size)); - write(batch->to_child, &is_write, sizeof(is_write)); + if (write(batch->to_child, &p, sizeof(p)) + + write(batch->to_child, &size, sizeof(size)) + + write(batch->to_child, &is_write, sizeof(is_write)) + != sizeof(p) + sizeof(size) + sizeof(is_write)) { + finish_child(batch); + errno = EFAULT; + return false; + } if (read(batch->from_child, &ret, sizeof(ret)) != sizeof(ret)) { finish_child(batch);