From c1fae0012daa7b8f89d9883132cbda62e8a0c928 Mon Sep 17 00:00:00 2001 From: Julien BLACHE Date: Thu, 7 Apr 2011 21:01:16 +0200 Subject: [PATCH] Add support for DOS-encoded pairing files --- src/remote_pairing.c | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/src/remote_pairing.c b/src/remote_pairing.c index 7bdce7cb..4524cc17 100644 --- a/src/remote_pairing.c +++ b/src/remote_pairing.c @@ -784,16 +784,14 @@ remote_pairing_read_pin(char *path) devname = fgets(buf, sizeof(buf), fp); if (!devname) { - DPRINTF(E_LOG, L_REMOTE, "Invalid Remote pairing file %s\n", path); + DPRINTF(E_LOG, L_REMOTE, "Empty Remote pairing file %s\n", path); fclose(fp); return; } len = strlen(devname); - if (buf[len - 1] == '\n') - buf[len - 1] = '\0'; - else + if (buf[len - 1] != '\n') { DPRINTF(E_LOG, L_REMOTE, "Invalid Remote pairing file %s: device name too long or missing pin\n", path); @@ -801,6 +799,25 @@ remote_pairing_read_pin(char *path) return; } + while (len) + { + if ((buf[len - 1] == '\r') || (buf[len - 1] == '\n')) + { + buf[len - 1] = '\0'; + len--; + } + else + break; + } + + if (!len) + { + DPRINTF(E_LOG, L_REMOTE, "Invalid Remote pairing file %s: empty line where device name expected\n", path); + + fclose(fp); + return; + } + devname = strdup(buf); if (!devname) { @@ -821,10 +838,16 @@ remote_pairing_read_pin(char *path) } len = strlen(pin); - if (buf[len - 1] == '\n') + + while (len) { - buf[len - 1] = '\0'; - len--; + if ((buf[len - 1] == '\r') || (buf[len - 1] == '\n')) + { + buf[len - 1] = '\0'; + len--; + } + else + break; } if (len != 4)