diff --git a/src/syncterm/ripper.c b/src/syncterm/ripper.c index ffc5eb712288560beeefa0c389aa96f567d82529..4fd5f67f9787d4b379545411bec735291bd359f4 100644 --- a/src/syncterm/ripper.c +++ b/src/syncterm/ripper.c @@ -15479,11 +15479,15 @@ do_skypix(char *buf, size_t len) break; char *dldir = strdup(rip.bbs->dldir); strcpy(rip.bbs->dldir, cache_path); - strcat(cache_path, p); - suspend_rip(true); - xmodem_download(rip.bbs, XMODEM | CRC | RECV, cache_path); - suspend_rip(false); - strcpy(rip.bbs->dldir, dldir); + // TODO: Handle error... + if ((strlen(cache_path) + strlen(p) + 1) <= sizeof(cache_path)) { + strcat(cache_path, p); + suspend_rip(true); + xmodem_download(rip.bbs, XMODEM | CRC | RECV, cache_path); + suspend_rip(false); + } + // TODO: strlcpy() needed in xpdev + strncpy(rip.bbs->dldir, dldir, sizeof(rip.bbs->dldir)); free(dldir); } break;