aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2025-04-23 19:44:23 +0000
committerLaurent Bercot <ska@appnovation.com>2025-04-23 19:44:23 +0000
commit6348137adc2e0d2914339e760dbde1814d44b109 (patch)
tree28aa3663d871f37d38e4d0c41fbcd7d9f60a8bc6
parent4a4fdf3685a6ebdd9f0ef68896536ba26392c538 (diff)
downloadskalibs-6348137adc2e0d2914339e760dbde1814d44b109.tar.gz
Add rpath; fix excessive ip4_scan tolerance
Signed-off-by: Laurent Bercot <ska@appnovation.com>
-rw-r--r--Makefile2
-rw-r--r--package/deps.mak2
-rw-r--r--src/libstddjb/ip4_scan.c20
3 files changed, 11 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index 278ee88..9321086 100644
--- a/Makefile
+++ b/Makefile
@@ -125,7 +125,7 @@ libskarnet.a.xyzzy: $(ALL_SOBJS)
exec $(RANLIB) $@
libskarnet.so.xyzzy: $(ALL_DOBJS)
- exec $(CC) -o $@ $(CFLAGS_ALL) $(CFLAGS_SHARED) $(LDFLAGS_ALL) $(LDFLAGS_SHARED) -Wl,-soname,libskarnet.so.$(version_M) $^ $(SOCKET_LIB) $(SPAWN_LIB) $(SYSCLOCK_LIB) $(TAINNOW_LIB) $(TIMER_LIB) $(UTIL_LIB)
+ exec $(CC) -o $@ $(CFLAGS_ALL) $(CFLAGS_SHARED) $(LDFLAGS_ALL) $(LDFLAGS_SHARED) -Wl,-soname,libskarnet.so.$(version_M) -Wl,-rpath=$(dynlibdir) $^ $(SOCKET_LIB) $(SPAWN_LIB) $(SYSCLOCK_LIB) $(TAINNOW_LIB) $(TIMER_LIB) $(UTIL_LIB)
.PHONY: it all clean distclean tgz strip install install-data install-sysdeps install-dynlib install-lib install-include
diff --git a/package/deps.mak b/package/deps.mak
index ef923c4..041f3d7 100644
--- a/package/deps.mak
+++ b/package/deps.mak
@@ -398,7 +398,7 @@ src/libstddjb/ip46_scanlist.o src/libstddjb/ip46_scanlist.lo: src/libstddjb/ip46
src/libstddjb/ip4_fmt.o src/libstddjb/ip4_fmt.lo: src/libstddjb/ip4_fmt.c src/include/skalibs/fmtscan.h src/include/skalibs/uint32.h
src/libstddjb/ip4_fmtu32.o src/libstddjb/ip4_fmtu32.lo: src/libstddjb/ip4_fmtu32.c src/include/skalibs/fmtscan.h src/include/skalibs/uint32.h
src/libstddjb/ip4_netmask.o src/libstddjb/ip4_netmask.lo: src/libstddjb/ip4_netmask.c src/include/skalibs/fmtscan.h src/include/skalibs/uint32.h
-src/libstddjb/ip4_scan.o src/libstddjb/ip4_scan.lo: src/libstddjb/ip4_scan.c src/include/skalibs/fmtscan.h src/include/skalibs/types.h
+src/libstddjb/ip4_scan.o src/libstddjb/ip4_scan.lo: src/libstddjb/ip4_scan.c src/include/skalibs/fmtscan.h src/include/skalibs/uint16.h
src/libstddjb/ip4_scanlist.o src/libstddjb/ip4_scanlist.lo: src/libstddjb/ip4_scanlist.c src/include/skalibs/fmtscan.h
src/libstddjb/ip4_scanlist_u32.o src/libstddjb/ip4_scanlist_u32.lo: src/libstddjb/ip4_scanlist_u32.c src/include/skalibs/fmtscan.h
src/libstddjb/ip4_scanu32.o src/libstddjb/ip4_scanu32.lo: src/libstddjb/ip4_scanu32.c src/include/skalibs/fmtscan.h src/include/skalibs/uint32.h
diff --git a/src/libstddjb/ip4_scan.c b/src/libstddjb/ip4_scan.c
index 19c2cec..fe4a8b6 100644
--- a/src/libstddjb/ip4_scan.c
+++ b/src/libstddjb/ip4_scan.c
@@ -1,24 +1,22 @@
/* ISC license. */
-#include <skalibs/types.h>
+#include <stdint.h>
+
+#include <skalibs/uint16.h>
#include <skalibs/fmtscan.h>
size_t ip4_scan (char const *s, char *ip)
{
size_t len = 0 ;
- unsigned int j = 0 ;
- for (; j < 4 ; j++)
+ uint16_t u ;
+ for (unsigned int j = 0 ; j < 4 ; j++)
{
- unsigned int u ;
- size_t i = uint_scan(s, &u) ;
- if (!i) return 0 ;
- ip[j] = (char)u ;
- s += i ;
+ size_t i = uint16_scan(s + len, &u) ;
+ if (!i || u > 0xffu) return 0 ;
+ ip[j] = u ;
len += i ;
if (j == 3) break ;
- if (*s != '.') return 0 ;
- ++s ;
- ++len ;
+ if (s[len++] != '.') return 0 ;
}
return len ;
}