diff options
author | Marcus Meissner <marcus@jet.franken.de> | 2020-01-25 18:30:31 +0100 |
---|---|---|
committer | Marcus Meissner <marcus@jet.franken.de> | 2020-01-25 18:30:31 +0100 |
commit | 8b0ec6d07a62a22586adb2b077612dd532996fa9 (patch) | |
tree | 752a3c6b48e22e78f8b7bc90c5cf4ff2e141fe61 | |
parent | 9590742c1c8a4f9e50d7daff19cb1385559ce8dc (diff) | |
download | libgphoto2-8b0ec6d07a62a22586adb2b077612dd532996fa9.tar.gz |
avoid endless loops on device going away (AFL)
-rw-r--r-- | camlibs/kodak/dc240/library.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/camlibs/kodak/dc240/library.c b/camlibs/kodak/dc240/library.c index 5352e9db2..d9949687b 100644 --- a/camlibs/kodak/dc240/library.c +++ b/camlibs/kodak/dc240/library.c @@ -60,6 +60,10 @@ #define GP_MODULE "dc240" +/* do not sleep during fuzzing */ +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +# define usleep(x) +#endif /* legacy from dc240.h */ /* @@ -165,10 +169,13 @@ write_again: /* Read in the response from the camera if requested */ while (read_response) { - if (gp_port_read(camera->port, in, 1) >= GP_OK) { + int ret; + if ((ret=gp_port_read(camera->port, in, 1)) >= GP_OK) { /* On error, read again */ read_response = 0; + break; } + if (ret == GP_ERROR_IO_READ) return ret; /* e.g. device detached? */ } return GP_OK; |