/*@globals rpmGlobalMacroContext, h_errno, fileSystem @*/
/*@modifies mb, rpmGlobalMacroContext, fileSystem @*/
{
- char *pcmd;
+ char pcmd[BUFSIZ];
FILE *shf;
int rc;
int c;
- pcmd = alloca(clen + 1);
- memset(pcmd, 0, (clen + 1));
+ if (clen >= sizeof(pcmd)) {
+ rpmError(RPMERR_BADSPEC, _("Target buffer overflow\n"));
+ return 1;
+ }
strncpy(pcmd, cmd, clen);
pcmd[clen] = '\0';
/*@globals rpmGlobalMacroContext, h_errno, fileSystem @*/
/*@modifies mb, rpmGlobalMacroContext, fileSystem @*/
{
- char *buf;
-
- buf = alloca(msglen + 1);
- memset(buf, 0, (msglen + 1));
+ char buf[BUFSIZ];
+ if (msglen >= sizeof(buf)) {
+ rpmError(RPMERR_BADSPEC, _("Target buffer overflow\n"));
+ msglen = sizeof(buf) - 1;
+ }
strncpy(buf, msg, msglen);
buf[msglen] = '\0';
(void) expandU(mb, buf, sizeof(buf));
/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
/*@modifies mb, rpmGlobalMacroContext, fileSystem, internalState @*/
{
- char *buf, *b = NULL, *be;
+ char buf[BUFSIZ], *b = NULL, *be;
int c;
- buf = alloca(gn + 1);
- memset(buf, 0, gn + 1);
+ buf[0] = '\0';
if (g != NULL) {
+ if (gn >= sizeof(buf)) {
+ rpmError(RPMERR_BADSPEC, _("Target buffer overflow\n"));
+ gn = sizeof(buf) - 1;
+ }
strncpy(buf, g, gn);
buf[gn] = '\0';
(void) expandU(mb, buf, sizeof(buf));