Introduction
Introduction Statistics Contact Development Disclaimer Help
Do not null-terminate strings printed by snprintf - sacc - sacc - sacc(omys), s…
git clone git://git.codemadness.org/sacc
Log
Files
Refs
LICENSE
---
commit 6272b9a65812c9f653d693941b3317fe2f98a028
parent 89d3a0bd06d2345ffa98675e356a17be24a61210
Author: Quentin Rameau <[email protected]>
Date: Mon, 8 Nov 2021 23:44:06 +0100
Do not null-terminate strings printed by snprintf
Diffstat:
M ui_ti.c | 42 ++++++++++++++---------------…
M ui_txt.c | 36 +++++++++++------------------…
2 files changed, 32 insertions(+), 46 deletions(-)
---
diff --git a/ui_ti.c b/ui_ti.c
@@ -75,9 +75,9 @@ uiprompt(char *fmt, ...)
putp(tparm(enter_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
va_start(ap, fmt);
- if (vsnprintf(bufout, sizeof(bufout), fmt, ap) >= sizeof(bufout))
- bufout[sizeof(bufout)-1] = '\0';
+ vsnprintf(bufout, sizeof(bufout), fmt, ap);
va_end(ap);
+
n = mbsprint(bufout, columns);
putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
@@ -110,9 +110,9 @@ uiprompt(char *fmt, ...)
static void
printitem(Item *item)
{
- if (snprintf(bufout, sizeof(bufout), "%s %s", typedisplay(item->type),
- item->username) >= sizeof(bufout))
- bufout[sizeof(bufout)-1] = '\0';
+ snprintf(bufout, sizeof(bufout), "%s %s",
+ typedisplay(item->type), item->username);
+
mbsprint(bufout, columns);
putchar('\r');
}
@@ -163,13 +163,12 @@ uistatus(char *fmt, ...)
va_end(ap);
if (n < sizeof(bufout)-1) {
- n += snprintf(bufout + n, sizeof(bufout) - n,
- " [Press a key to continue \xe2\x98\x83]");
+ snprintf(bufout+n, sizeof(bufout)-n,
+ " [Press a key to continue \xe2\x98\x83]");
}
- if (n >= sizeof(bufout))
- bufout[sizeof(bufout)-1] = '\0';
- n = mbsprint(bufout, columns);
+ mbsprint(bufout, columns);
+
putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
putp(tparm(clr_eol, 0, 0, 0, 0, 0, 0, 0, 0, 0));
@@ -184,22 +183,23 @@ displaystatus(Item *item)
{
Dir *dir = item->dat;
char *fmt;
- size_t n, nitems = dir ? dir->nitems : 0;
+ size_t nitems = dir ? dir->nitems : 0;
unsigned long long printoff = dir ? dir->printoff : 0;
putp(tparm(save_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0));
putp(tparm(cursor_address, lines-1, 0, 0, 0, 0, 0, 0, 0, 0));
putp(tparm(enter_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+
fmt = (strcmp(item->port, "70") && strcmp(item->port, "gopher")) ?
"%1$3lld%%| %2$s:%5$s/%3$c%4$s" : "%3lld%%| %s/%c%s";
- if (snprintf(bufout, sizeof(bufout), fmt,
- (printoff + lines-1 >= nitems) ? 100 :
- (printoff + lines-1) * 100 / nitems,
- item->host, item->type, item->selector, item->port)
- >= sizeof(bufout))
- bufout[sizeof(bufout)-1] = '\0';
- n = mbsprint(bufout, columns);
+ snprintf(bufout, sizeof(bufout), fmt,
+ (printoff + lines-1 >= nitems) ? 100 :
+ (printoff + lines-1) * 100 / nitems,
+ item->host, item->type, item->selector, item->port);
+
+ mbsprint(bufout, columns);
+
putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
putp(tparm(clr_eol, 0, 0, 0, 0, 0, 0, 0, 0, 0));
@@ -210,8 +210,6 @@ displaystatus(Item *item)
static void
displayuri(Item *item)
{
- size_t n;
-
if (item->type == 0 || item->type == 'i')
return;
@@ -222,10 +220,8 @@ displayuri(Item *item)
itemuri(item, bufout, sizeof(bufout));
- if (n >= sizeof(bufout))
- bufout[sizeof(bufout)-1] = '\0';
+ mbsprint(bufout, columns);
- n = mbsprint(bufout, columns);
putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
putp(tparm(clr_eol, 0, 0, 0, 0, 0, 0, 0, 0, 0));
diff --git a/ui_txt.c b/ui_txt.c
@@ -78,11 +78,9 @@ uistatus(char *fmt, ...)
va_end(arg);
if (n < sizeof(bufout)-1) {
- n += snprintf(bufout + n, sizeof(bufout) - n,
- " [Press Enter to continue \xe2\x98\x83]");
+ snprintf(bufout+n, sizeof(bufout)-n,
+ " [Press Enter to continue \xe2\x98\x83]");
}
- if (n >= sizeof(bufout))
- bufout[sizeof(bufout)-1] = '\0';
mbsprint(bufout, columns);
fflush(stdout);
@@ -101,12 +99,11 @@ printstatus(Item *item, char c)
fmt = (strcmp(item->port, "70") && strcmp(item->port, "gopher")) ?
"%1$3lld%%%*2$3$c %4$s:%8$s/%5$c%6$s [%7$c]: " :
"%3lld%% %s/%c%s [%c]: ";
- if (snprintf(bufout, sizeof(bufout), fmt,
- (printoff + lines-1 >= nitems) ? 100 :
- (printoff + lines) * 100 / nitems,
- item->host, item->type, item->selector, c, item->port)
- >= sizeof(bufout))
- bufout[sizeof(bufout)-1] = '\0';
+ snprintf(bufout, sizeof(bufout), fmt,
+ (printoff + lines-1 >= nitems) ? 100 :
+ (printoff + lines) * 100 / nitems,
+ item->host, item->type, item->selector, c, item->port);
+
mbsprint(bufout, columns);
}
@@ -119,8 +116,7 @@ uiprompt(char *fmt, ...)
ssize_t r;
va_start(ap, fmt);
- if (vsnprintf(bufout, sizeof(bufout), fmt, ap) >= sizeof(bufout))
- bufout[sizeof(bufout)-1] = '\0';
+ vsnprintf(bufout, sizeof(bufout), fmt, ap);
va_end(ap);
mbsprint(bufout, columns);
@@ -158,11 +154,10 @@ uidisplay(Item *entry)
nd = ndigits(nitems);
for (i = dir->printoff; i < nitems && i < nlines; ++i) {
- if (snprintf(bufout, sizeof(bufout), "%*zu %s %s",
- nd, i+1, typedisplay(items[i].type),
- items[i].username)
- >= sizeof(bufout))
- bufout[sizeof(bufout)-1] = '\0';
+ snprintf(bufout, sizeof(bufout), "%*zu %s %s",
+ nd, i+1,typedisplay(items[i].type),
+ items[i].username);
+
mbsprint(bufout, columns);
putchar('\n');
}
@@ -173,15 +168,10 @@ uidisplay(Item *entry)
void
printuri(Item *item, size_t i)
{
- int n;
-
if (!item || item->type == 0 || item->type == 'i')
return;
- n = itemuri(item, bufout, sizeof(bufout));
-
- if (n >= sizeof(bufout))
- bufout[sizeof(bufout)-1] = '\0';
+ itemuri(item, bufout, sizeof(bufout));
mbsprint(bufout, columns);
putchar('\n');
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.