diff options
author | Marcus Meissner <marcus@jet.franken.de> | 2021-10-02 11:59:30 +0200 |
---|---|---|
committer | Marcus Meissner <marcus@jet.franken.de> | 2021-10-02 12:01:36 +0200 |
commit | 8cc927c0cbc4127f2aec2771912b82cb336025c6 (patch) | |
tree | 3e040989a37aaa3eab6a594b7adb0fe51e2cbdcf | |
parent | 0f5195cc89d276cc0842c06ebc91eb1106520532 (diff) | |
download | libgphoto2-8cc927c0cbc4127f2aec2771912b82cb336025c6.tar.gz |
fixed uninitialized memory access / potential crash
https://github.com/gphoto/libgphoto2/issues/721
-rw-r--r-- | camlibs/ptp2/library.c | 11 | ||||
-rw-r--r-- | libgphoto2_port/configure.ac | 22 |
2 files changed, 27 insertions, 6 deletions
diff --git a/camlibs/ptp2/library.c b/camlibs/ptp2/library.c index 1a02f361e..a196bf352 100644 --- a/camlibs/ptp2/library.c +++ b/camlibs/ptp2/library.c @@ -3211,11 +3211,14 @@ add_object_to_fs_and_path (Camera *camera, uint32_t handle, PTPObjectInfo *oi, C PTPObject *ob; PTPParams *params = &camera->pl->params; - C_PTP (ptp_object_want (params, handle, 0, &ob)); + C_PTP (ptp_object_want (params, handle, PTPOBJECT_OBJECTINFO_LOADED, &ob)); + + strcpy (path->name, ob->oi.Filename); + sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx/",(unsigned long)ob->oi.StorageID); - strcpy (path->name, oi->Filename); - sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx/",(unsigned long)oi->StorageID); - get_folder_from_handle (camera, oi->StorageID, oi->ParentObject, path->folder); + get_folder_from_handle (camera, oi->StorageID, ob->oi.ParentObject, path->folder); /* might invalidate ob */ + + C_PTP (ptp_object_want (params, handle, PTPOBJECT_OBJECTINFO_LOADED, &ob)); /* delete last / or we get confused later. */ path->folder[ strlen(path->folder)-1 ] = '\0'; diff --git a/libgphoto2_port/configure.ac b/libgphoto2_port/configure.ac index c9ab924b7..254cc172e 100644 --- a/libgphoto2_port/configure.ac +++ b/libgphoto2_port/configure.ac @@ -467,8 +467,26 @@ for x in ${IOLIB_LIST}; do IOLIB_LTLIST="${IOLIB_LTLIST} ${x}.la" done AC_SUBST(IOLIB_LTLIST) -AC_SUBST([iolibdir],["\$(libdir)/\$(PACKAGE_TARNAME)/\$(VERSION)"]) -AM_CPPFLAGS="$AM_CPPFLAGS -DIOLIBS=\\\"${iolibdir}\\\"" + +dnl AC_SUBST([iolibdir],["\$(libdir)/\$(PACKAGE_TARNAME)/\$(VERSION)"]) +dnl AM_CPPFLAGS="$AM_CPPFLAGS -DIOLIBS=\\\"${iolibdir}\\\"" + +dnl --------------------------------------------------------------------------- +dnl iolib installation directory +dnl --------------------------------------------------------------------------- +AC_MSG_CHECKING([where to install io (port) libraries]) +AC_ARG_WITH([iolibdir],[AS_HELP_STRING( + [--with-iolibdir=<path>], + [install io (port) libraries in directory <path>])dnl +],[ + iolibdir="$withval" +],[ + iolibdir="\${libdir}/${PACKAGE_TARNAME}/${PACKAGE_VERSION}" +]) +AC_MSG_RESULT([${iolibdir}]) +AC_SUBST([iolibdir]) +AM_CPPFLAGS="$AM_CPPFLAGS -DIOLIBS=\\\"\$(iolibdir)\\\"" + sorted_iolib_list="$(echo "${IOLIB_LIST}" | tr ' ' '\n' | sort | ${SED} '/^$/d' | tr '\n' ' ' | ${SED} 's/ $//')" AC_DEFINE_UNQUOTED([IOLIB_LIST], ["${sorted_iolib_list}"], [Define as string containing a list of the iolibs]) |