summaryrefslogtreecommitdiff
path: root/camlibs
diff options
context:
space:
mode:
authorMarcus Meissner <marcus@jet.franken.de>2019-04-28 10:28:59 +0200
committerMarcus Meissner <marcus@jet.franken.de>2019-04-28 10:28:59 +0200
commite56b98736b24c8b7563c4767debed45bee664a51 (patch)
treea311835e7bfc3028d899a321e10909ff6badde2d /camlibs
parent170922042ac5ae8a1ca0c51dd355af236217ceb9 (diff)
downloadlibgphoto2-e56b98736b24c8b7563c4767debed45bee664a51.tar.gz
sanity check picture number to avoid overflow (AFL)
Diffstat (limited to 'camlibs')
-rw-r--r--camlibs/lg_gsm/lg_gsm.c4
-rw-r--r--camlibs/lg_gsm/library.c4
2 files changed, 7 insertions, 1 deletions
diff --git a/camlibs/lg_gsm/lg_gsm.c b/camlibs/lg_gsm/lg_gsm.c
index 6ead1b4a2..5b7779a1c 100644
--- a/camlibs/lg_gsm/lg_gsm.c
+++ b/camlibs/lg_gsm/lg_gsm.c
@@ -66,6 +66,7 @@ int lg_gsm_init (GPPort *port, Model *model, Info *info)
/* This information, too. */
memcpy (info, &firmware[6], 40);
+ info[39] = 0;
GP_DEBUG("info = %s\n", info);
/*GP_DEBUG("info[20] = 0x%x\n", firmware[26]);*/
@@ -235,6 +236,9 @@ int lg_gsm_list_files (GPPort *port, CameraList *list)
num_pics=photonumber[20]+256*photonumber[21];
+ GP_DEBUG ("num_pics = %d\n", num_pics);
+ if (num_pics > 1000) return GP_ERROR;
+
/* increase timeout to 20s */
/*port->timeout=20000;*/
/* read 142 * nb_photos */
diff --git a/camlibs/lg_gsm/library.c b/camlibs/lg_gsm/library.c
index eb7186bc1..f1333fbf7 100644
--- a/camlibs/lg_gsm/library.c
+++ b/camlibs/lg_gsm/library.c
@@ -95,9 +95,11 @@ camera_summary (Camera *camera, CameraText *summary, GPContext *context)
char firmware[20];
char firmware_version[20];
+
memcpy(firmware,&camera->pl->info[0],20);
+ firmware[19] = 0;
memcpy(firmware_version,&camera->pl->info[20],20);
-
+ firmware_version[19] = 0;
sprintf (summary->text,_("Your USB camera seems to be a LG GSM.\n"
"Firmware: %s\n"