tldr-pages / tldr-c-client

C command-line client for tldr pages
MIT License
296 stars 49 forks source link

Local stack overflow error #30

Closed xcainiao closed 4 years ago

xcainiao commented 6 years ago

Should check sum size before memcpy

while (optind < argc) {
            if (sum >= 4096)
                exit(EXIT_FAILURE);

            len = strlen(argv[optind]);
            memcpy(buf + sum, argv[optind], len);
            memcpy(buf + sum + len, "-", 1);
            sum += len + 1;
            optind++;
        }

Maybe

while (optind < argc) {
            len = strlen(argv[optind]);
             if (sum+len >= 4096)
                exit(EXIT_FAILURE);
            memcpy(buf + sum, argv[optind], len);
            memcpy(buf + sum + len, "-", 1);
            sum += len + 1;
            optind++;
        }