added Joerg Jung's pledge patch - sic - simple irc client | |
git clone git://git.suckless.org/sic | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 9bb34de449c8f22d869a6f3794107ed25d37c7c1 | |
parent 7f0141bbe92dc6c3423ff39d21e8ec5c18b58ec1 | |
Author: Anselm R Garbe <[email protected]> | |
Date: Sat, 18 Mar 2017 19:24:55 +0100 | |
added Joerg Jung's pledge patch | |
Diffstat: | |
M LICENSE | 2 +- | |
M Makefile | 4 ++-- | |
M sic.c | 6 ++++++ | |
A strlcpy.c | 46 +++++++++++++++++++++++++++++… | |
M util.c | 7 ------- | |
5 files changed, 55 insertions(+), 10 deletions(-) | |
--- | |
diff --git a/LICENSE b/LICENSE | |
@@ -1,6 +1,6 @@ | |
MIT/X Consortium License | |
-© 2005-2013 Anselm R Garbe <[email protected]> | |
+© 2005-2017 Anselm R Garbe <[email protected]> | |
© 2008-2009 Jeroen Schot <[email protected]> | |
© 2007-2009 Kris Maglione <[email protected]> | |
© 2005 Nico Golde <nico at ngolde dot de> | |
diff --git a/Makefile b/Makefile | |
@@ -17,7 +17,7 @@ options: | |
@echo CC $< | |
@${CC} -c ${CFLAGS} $< | |
-${OBJ}: config.h config.mk util.c | |
+${OBJ}: config.h config.mk strlcpy.c util.c | |
config.h: | |
@echo creating $@ from config.def.h | |
@@ -34,7 +34,7 @@ clean: | |
dist: clean | |
@echo creating dist tarball | |
@mkdir -p sic-${VERSION} | |
- @cp -R LICENSE Makefile README arg.h config.def.h config.mk sic.1 sic.… | |
+ @cp -R LICENSE Makefile README arg.h config.def.h config.mk sic.1 sic.… | |
@tar -cf sic-${VERSION}.tar sic-${VERSION} | |
@gzip sic-${VERSION}.tar | |
@rm -rf sic-${VERSION} | |
diff --git a/sic.c b/sic.c | |
@@ -22,6 +22,8 @@ static char channel[256]; | |
static time_t trespond; | |
static FILE *srv; | |
+#undef strlcpy | |
+#include "strlcpy.c" | |
#include "util.c" | |
static void | |
@@ -182,6 +184,10 @@ main(int argc, char *argv[]) { | |
setbuf(stdout, NULL); | |
setbuf(srv, NULL); | |
setbuf(stdin, NULL); | |
+#ifdef __OpenBSD__ | |
+ if (pledge("stdio", NULL) == -1) | |
+ eprint("error: pledge:"); | |
+#endif | |
for(;;) { /* main loop */ | |
FD_ZERO(&rd); | |
FD_SET(0, &rd); | |
diff --git a/strlcpy.c b/strlcpy.c | |
@@ -0,0 +1,46 @@ | |
+/* | |
+ * Copyright (c) 1998 Todd C. Miller <[email protected]> | |
+ * | |
+ * Permission to use, copy, modify, and distribute this software for any | |
+ * purpose with or without fee is hereby granted, provided that the above | |
+ * copyright notice and this permission notice appear in all copies. | |
+ * | |
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
+ */ | |
+ | |
+#include <string.h> | |
+#include <sys/types.h> | |
+ | |
+/* | |
+ * Copy src to string dst of size siz. At most siz-1 characters | |
+ * will be copied. Always NUL terminates (unless siz == 0). | |
+ * Returns strlen(src); if retval >= siz, truncation occurred. | |
+ */ | |
+size_t | |
+strlcpy(char *dst, const char *src, size_t siz) | |
+{ | |
+ char *d = dst; | |
+ const char *s = src; | |
+ size_t n = siz; | |
+ /* Copy as many bytes as will fit */ | |
+ if (n != 0) { | |
+ while (--n != 0) { | |
+ if ((*d++ = *s++) == '\0') | |
+ break; | |
+ } | |
+ } | |
+ /* Not enough room in dst, add NUL and traverse rest of src */ | |
+ if (n == 0) { | |
+ if (siz != 0) | |
+ *d = '\0'; /* NUL-terminate dst */ | |
+ while (*s++) | |
+ ; | |
+ } | |
+ return(s - src - 1); /* count does not include NUL */ | |
+} | |
diff --git a/util.c b/util.c | |
@@ -40,13 +40,6 @@ dial(char *host, char *port) { | |
return srv; | |
} | |
-#define strlcpy _strlcpy | |
-static void | |
-strlcpy(char *to, const char *from, int l) { | |
- memccpy(to, from, '\0', l); | |
- to[l-1] = '\0'; | |
-} | |
- | |
static char * | |
eat(char *s, int (*p)(int), int r) { | |
while(*s != '\0' && p(*s) == r) |