summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Meissner <meissner@suse.de>2022-11-29 09:01:32 +0100
committerMarcus Meissner <meissner@suse.de>2022-11-29 09:01:32 +0100
commit6a8b4cfc2c9a8a770346f8777ca9da8130b2171d (patch)
tree293f2f5d66483eb924d8e48bf5543eaa71d21a9a
parentc9e69f4bbcec6bd68bd6e095ae3e26317306ed13 (diff)
downloadlibmtp-6a8b4cfc2c9a8a770346f8777ca9da8130b2171d.tar.gz
Revert "ptp_pack_string: check string length for no iconv situation"
was not correct, see discussion in https://github.com/libmtp/libmtp/commit/2ada8d587bbfb077f3b7155ebd0dfa8db65e935d This reverts commit 45b29802d7473a969cbc268a4c64e0797c7911c2.
-rw-r--r--src/ptp-pack.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/ptp-pack.c b/src/ptp-pack.c
index d5e9488..0616996 100644
--- a/src/ptp-pack.c
+++ b/src/ptp-pack.c
@@ -212,13 +212,13 @@ ptp_pack_string(PTPParams *params, char *string, unsigned char* data, uint16_t o
uint16_t ucs2str[PTP_MAXSTRLEN+1];
char *ucs2strp = (char *) ucs2str;
size_t convlen = strlen(string);
- size_t convmax = PTP_MAXSTRLEN * 2; /* Includes the terminator */
/* Cannot exceed 255 (PTP_MAXSTRLEN) since it is a single byte, duh ... */
memset(ucs2strp, 0, sizeof(ucs2str)); /* XXX: necessary? */
#if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H)
if (params->cd_locale_to_ucs2 != (iconv_t)-1) {
size_t nconv;
+ size_t convmax = PTP_MAXSTRLEN * 2; /* Includes the terminator */
char *stringp = string;
nconv = iconv(params->cd_locale_to_ucs2, &stringp, &convlen,
@@ -230,10 +230,10 @@ ptp_pack_string(PTPParams *params, char *string, unsigned char* data, uint16_t o
{
unsigned int i;
- for (i=0;i<convlen && i<convmax;i++) {
+ for (i=0;i<convlen;i++) {
ucs2str[i] = string[i];
}
- ucs2str[i] = 0;
+ ucs2str[convlen] = 0;
}
/*
* XXX: isn't packedlen just ( (uint16_t *)ucs2strp - ucs2str )?