diff
minitox.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/minitox.c b/minitox.c
index 963a5c3..cd8a85f 100644
--- a/minitox.c
+++ b/minitox.c
@@ -408,7 +408,7 @@ void setup_arepl(void) {
async_repl->line = malloc(LINE_MAX_SIZE);
async_repl->prompt = malloc(LINE_MAX_SIZE);
- strcpy(async_repl->prompt, CMD_PROMPT);
+ snprintf(async_repl->prompt, async_repl->sz, "%s", CMD_PROMPT);
// stdin and stdout may share the same file obj,
// reopen stdin to avoid accidentally getting stdout modified.
@@ -641,7 +641,7 @@ void friend_name_cb(Tox *tox, uint32_t friend_num, const uint8_t *name, size_t l
sprintf(f->name, "%.*s", (int)length, (char*)name);
if (GEN_INDEX(friend_num, TALK_TYPE_FRIEND) == TalkingTo) {
INFO("* Opposite changed name to %.*s", (int)length, (char*)name)
- sprintf(async_repl->prompt, FRIEND_TALK_PROMPT, f->name);
+ snprintf(async_repl->prompt, async_repl->sz, FRIEND_TALK_PROMPT, f->name);
}
}
}
@@ -715,7 +715,7 @@ void group_title_cb(Tox *tox, uint32_t group_num, uint32_t peer_number, const ui
sprintf(cf->title, "%.*s", (int)length, (char*)title);
if (GEN_INDEX(group_num, TALK_TYPE_GROUP) == TalkingTo) {
INFO("* Group title changed to %s", cf->title);
- sprintf(async_repl->prompt, GROUP_TALK_PROMPT, cf->title);
+ snprintf(async_repl->prompt, async_repl->sz, GROUP_TALK_PROMPT, cf->title);
}
}
}
@@ -783,7 +783,12 @@ void group_peer_name_cb(Tox *tox, uint32_t group_num, uint32_t peer_num, const u
}
struct GroupPeer *p = &cf->peers[peer_num];
- sprintf(p->name, "%.*s", (int)length, (char*)name);
+ size_t name_len = length;
+ if (name_len > TOX_MAX_NAME_LENGTH) {
+ name_len = TOX_MAX_NAME_LENGTH;
+ }
+ memcpy(p->name, name, name_len);
+ p->name[name_len] = '\0';
}
@@ -1085,7 +1090,7 @@ void command_save(int narg, char **args) {
void command_go(int narg, char **args) {
if (narg == 0) {
TalkingTo = TALK_TYPE_NULL;
- strcpy(async_repl->prompt, CMD_PROMPT);
+ snprintf(async_repl->prompt, async_repl->sz, "%s", CMD_PROMPT);
return;
}
uint32_t contact_idx;
@@ -1096,7 +1101,7 @@ void command_go(int narg, char **args) {
struct Friend *f = getfriend(num);
if (f) {
TalkingTo = contact_idx;
- sprintf(async_repl->prompt, FRIEND_TALK_PROMPT, f->name);
+ snprintf(async_repl->prompt, async_repl->sz, FRIEND_TALK_PROMPT, f->name);
return;
}
break;
@@ -1105,7 +1110,7 @@ void command_go(int narg, char **args) {
struct Group *cf = getgroup(num);
if (cf) {
TalkingTo = contact_idx;
- sprintf(async_repl->prompt, GROUP_TALK_PROMPT, cf->title);
+ snprintf(async_repl->prompt, async_repl->sz, GROUP_TALK_PROMPT, cf->title);
return;
}
break;