On Fri, Aug 21, 2015 at 04:10:19PM +0100, Rainer Weikusat wrote: > Hendrik Boom <[email protected]> writes: > > > On Fri, Aug 21, 2015 at 12:51:55PM +0100, Rainer Weikusat wrote: > >> > >> That's going to work with this particular problem which you incorrectly > >> (the original path wasn't a macro) reduced to appending a string of > >> unknown length to a constant string. Taking this into account, a > >> solution without snprintf would become something like > >> > >> #define PATH "/tmp/" > >> > >> char *p; > >> > >> p = alloca(sizeof(PATH) + strlen(argv[1])); > > > > Should that be > > p = alloca(sizeof(PATH) + strlen(argv[1]) + 1); > > > >> sprintf(p, "%s%s", PATH, argv[1]); > > > > so there's space for the terminating '\0'? > > The size of a string literal includes the terminating 0.
Ah! Of course. I missed that PATH was a strin literal. Of course, it PATH had expanded to a char* expression, my answer would have been even more wrong. It would have to be another strlen instead of sizeof. -- hendrik > _______________________________________________ > Dng mailing list > [email protected] > https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng _______________________________________________ Dng mailing list [email protected] https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng
