summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Meissner <marcus@jet.franken.de>2020-01-25 18:30:31 +0100
committerMarcus Meissner <marcus@jet.franken.de>2020-01-25 18:30:31 +0100
commit8b0ec6d07a62a22586adb2b077612dd532996fa9 (patch)
tree752a3c6b48e22e78f8b7bc90c5cf4ff2e141fe61
parent9590742c1c8a4f9e50d7daff19cb1385559ce8dc (diff)
downloadlibgphoto2-8b0ec6d07a62a22586adb2b077612dd532996fa9.tar.gz
avoid endless loops on device going away (AFL)
-rw-r--r--camlibs/kodak/dc240/library.c9
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;