summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2021-06-09 14:34:57 -0700
committerJune McEnroe <june@causal.agency>2021-06-09 17:54:26 -0400
commit0a1cfca0f41ca4ee5d981253b8f151c67aacf4f6 (patch)
treea3876a6d59daf3d0ad25832c79b9645d5fc88aa7
parentRemove catf (diff)
downloadcatgirl-0a1cfca0f41ca4ee5d981253b8f151c67aacf4f6.tar.gz
catgirl-0a1cfca0f41ca4ee5d981253b8f151c67aacf4f6.zip
Avoid creating out-of-bounds pointer when checking for seprintf truncation
It is technically undefined behavior (see C11 6.5.6p8) to construct
a pointer more than one past the end of an array. To prevent this,
compare n with the remaining space in the array before adding to
ptr.
-rw-r--r--chat.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/chat.h b/chat.h
index e75112a..327262b 100644
--- a/chat.h
+++ b/chat.h
@@ -52,8 +52,8 @@ static inline char *seprintf(char *ptr, char *end, const char *fmt, ...) {
 	int n = vsnprintf(ptr, end - ptr, fmt, ap);
 	va_end(ap);
 	if (n < 0) return NULL;
-	ptr += n;
-	return (ptr > end ? end : ptr);
+	if (n > end - ptr) return end;
+	return ptr + n;
 }
 
 enum Attr {
s='logmsg'> 2017-03-18Add -u option to xxJune McEnroe 2017-03-15Fix non-string-literal-format-string in briJune McEnroe 2017-03-15Fix bri compilationJune McEnroe cc will remove the file itself just fine. Always exit in case any of the shell commands fail. 2017-03-15Use psvar for title settingJune McEnroe Prevents prompt expansion from happening on the command being run when it is set in the title. 2017-03-14Add bri brightness control scriptJune McEnroe This is probably terrible. 2017-03-14Add comment to tmux terminal overrideJune McEnroe 2017-03-13Have tmux set block cursor on linux consoleJune McEnroe 2017-03-13Use inverse for Visual in colorschemeJune McEnroe