X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fptr_valid%2Fptr_valid.c;fp=ccan%2Fptr_valid%2Fptr_valid.c;h=dc61dd27cbc1fbd46a06e73ad25d4c1bb6fb9848;hb=ca8bfcc49ad8b340d0de2081bd7955a16a07a6f2;hp=ef95d34f39c7a145a2b0c3621c8c764ea65d140b;hpb=0ce52c7ca42c2b3a6458cac348f5a8b96d7f1b62;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);