meta-sysmocom-bsp/recipes-extra/gpsd/gpsd/0002-gps2udp-leave-argv-unt...

59 lines
1.9 KiB
Diff

From 901b3f9b6747eca8893ecaae824be396a6a4b5db Mon Sep 17 00:00:00 2001
From: Oliver Smith <osmith@sysmocom.de>
Date: Tue, 13 Dec 2022 15:37:15 +0100
Subject: [PATCH] gps2udp: leave argv untouched
Rebase of leave-argv-untouched.patch we carried. Doesn't seem important,
but to keep the behavior consistent. Originally added with the following
commit message to meta-sysmocom-bsp.git:
commit 26d74189eb2023ce14af8dd41b36cd388ab8bebb
Author: Holger Hans Peter Freyther <holger@moiji-mobile.com>
Date: Tue Jul 15 08:28:42 2014 +0200
gpsd: Do not mess with the argv of the process
Henning got really confused that the "a.b.c:1234" he passed to
gps2udp showed up as "a.b.c 1234" in the kernel cmdline. Use
strdup to take a copy of it.
Fixes: SYS#424
---
clients/gps2udp.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/clients/gps2udp.c b/clients/gps2udp.c
index d27814f24..81d141fa2 100644
--- a/clients/gps2udp.c
+++ b/clients/gps2udp.c
@@ -436,6 +436,7 @@ static unsigned int AISGetInt(unsigned char *bitbytes, unsigned int sp,
int main(int argc, char **argv)
{
+ int i;
bool daemonize = false;
long count = -1;
char *udphostport[MAX_UDP_DEST];
@@ -526,7 +527,7 @@ int main(int argc, char **argv)
"gps2udp: too many UDP destinations (max=%d).\n",
MAX_UDP_DEST);
} else {
- udphostport[udpchannel++] = optarg;
+ udphostport[udpchannel++] = strdup(optarg);
if (0 < debug) {
(void)fprintf(stdout, "UDP %s added.\n", optarg);
}
@@ -686,6 +687,9 @@ int main(int argc, char **argv)
} // end len > 3
} // end for (;;)
+ for (i = 0; i < udpchannel; ++i)
+ free(udphostport[i]);
+
// This is an infinite loop, should never be here
(void)fprintf (stderr, "gpsd2udp ERROR abnormal exit\n");
exit (-1);
--
2.34.1