Remove all GPS metadata from images uploaded as media (#3781)

Previously a minimal set of tags were removed, but we should make sure every single one of them is removed.
This commit is contained in:
Jorge Martin Espinosa
2024-11-04 10:31:55 +01:00
committed by GitHub
parent 3819135e7c
commit e841faa737

View File

@@ -210,12 +210,44 @@ class AndroidMediaPreProcessor @Inject constructor(
private fun removeSensitiveImageMetadata(file: File) {
// Remove GPS info, user comments and subject location tags
val exifInterface = ExifInterface(file)
// See ExifInterface.TAG_GPS_INFO_IFD_POINTER
exifInterface.setAttribute("GPSInfoIFDPointer", null)
exifInterface.setAttribute(ExifInterface.TAG_USER_COMMENT, null)
exifInterface.setAttribute(ExifInterface.TAG_SUBJECT_LOCATION, null)
tryOrNull { exifInterface.saveAttributes() }
ExifInterface(file).apply {
// See ExifInterface.TAG_GPS_INFO_IFD_POINTER
setAttribute("GPSInfoIFDPointer", null)
setAttribute(ExifInterface.TAG_USER_COMMENT, null)
setAttribute(ExifInterface.TAG_IMAGE_DESCRIPTION, null)
setAttribute(ExifInterface.TAG_GPS_VERSION_ID, null)
setAttribute(ExifInterface.TAG_GPS_ALTITUDE_REF, null)
setAttribute(ExifInterface.TAG_GPS_ALTITUDE, null)
setAttribute(ExifInterface.TAG_GPS_TIMESTAMP, null)
setAttribute(ExifInterface.TAG_GPS_DATESTAMP, null)
setAttribute(ExifInterface.TAG_GPS_SATELLITES, null)
setAttribute(ExifInterface.TAG_GPS_STATUS, null)
setAttribute(ExifInterface.TAG_GPS_MEASURE_MODE, null)
setAttribute(ExifInterface.TAG_GPS_DOP, null)
setAttribute(ExifInterface.TAG_GPS_SPEED_REF, null)
setAttribute(ExifInterface.TAG_GPS_SPEED, null)
setAttribute(ExifInterface.TAG_GPS_TRACK_REF, null)
setAttribute(ExifInterface.TAG_GPS_TRACK, null)
setAttribute(ExifInterface.TAG_GPS_IMG_DIRECTION_REF, null)
setAttribute(ExifInterface.TAG_GPS_IMG_DIRECTION, null)
setAttribute(ExifInterface.TAG_GPS_MAP_DATUM, null)
setAttribute(ExifInterface.TAG_GPS_DEST_BEARING_REF, null)
setAttribute(ExifInterface.TAG_GPS_DEST_BEARING, null)
setAttribute(ExifInterface.TAG_GPS_DEST_DISTANCE_REF, null)
setAttribute(ExifInterface.TAG_GPS_DEST_DISTANCE, null)
setAttribute(ExifInterface.TAG_GPS_PROCESSING_METHOD, null)
setAttribute(ExifInterface.TAG_GPS_AREA_INFORMATION, null)
setAttribute(ExifInterface.TAG_GPS_DIFFERENTIAL, null)
setAttribute(ExifInterface.TAG_GPS_H_POSITIONING_ERROR, null)
setAttribute(ExifInterface.TAG_GPS_LATITUDE, null)
setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, null)
setAttribute(ExifInterface.TAG_GPS_LONGITUDE, null)
setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF, null)
setAttribute(ExifInterface.TAG_GPS_DEST_LONGITUDE, null)
setAttribute(ExifInterface.TAG_GPS_DEST_LONGITUDE_REF, null)
tryOrNull { saveAttributes() }
}
}
private suspend fun createTmpFileWithInput(inputStream: InputStream): File? {