59 lines
1.9 KiB
Diff
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
|
|
|