librt/aio_cancel(): Set errno to EBADF if the fd is not valid.
authorSascha Wildner <saw@online.de>
Mon, 24 Dec 2012 21:48:03 +0000 (22:48 +0100)
committerSascha Wildner <saw@online.de>
Mon, 24 Dec 2012 22:06:31 +0000 (23:06 +0100)
lib/librt/aio.c

index 3823714..91f8853 100644 (file)
@@ -37,6 +37,7 @@
 #include <sys/time.h>
 #include <sys/signal.h>
 #include <sys/queue.h>
+#include <sys/stat.h>
 #include <unistd.h>
 #include <errno.h>
 #include <sys/aio.h>
@@ -215,6 +216,13 @@ aio_return(struct aiocb *ap)
 int
 aio_cancel(int fildes, struct aiocb *aiocbp)
 {
+       struct stat sb;
+
+       /* must be a valid file descriptor */
+       if (fstat(fildes, &sb)) {
+               errno = EBADF;
+               return -1;
+       }
        return (AIO_ALLDONE);
 }