aboutsummaryrefslogtreecommitdiff
path: root/gas/config/te-vms.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2016-03-21 16:31:46 +0000
committerNick Clifton <nickc@redhat.com>2016-03-21 16:31:46 +0000
commite1fa0163505af867009ea73fc5f705162120e795 (patch)
treefd2c95bc22a2dc813c4ab7e70200701f1854d144 /gas/config/te-vms.c
parentc55978a67a2e23999c3359a13bb807b665fcb33e (diff)
downloadgdb-e1fa0163505af867009ea73fc5f705162120e795.zip
gdb-e1fa0163505af867009ea73fc5f705162120e795.tar.gz
gdb-e1fa0163505af867009ea73fc5f705162120e795.tar.bz2
Remove use of alloca.
bfd * warning.m4 (GCC_WARN_CFLAGS): Add -Wstack-usage=262144 * configure: Regenerate. * elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Replace use of alloca with call to xmalloc. * elf32-nds32.c: Likewise. * elf64-hppa.c: Likewise. * elfxx-mips.c: Likewise. * pef.c: Likewise. * pei-x86_64.c: Likewise. * som.c: Likewise. * xsym.c: Likewise. binutils * dlltool.c: Replace use of alloca with call to xmalloc. * dllwrap.c: Likewise. * nlmconv.c: Likewise. * objdump.c: Likewise. * resrc.c: Likewise. * winduni.c: Likewise. * configure: Regenerate. gas * atof-generic.c: Replace use of alloca with call to xmalloc. * cgen.c: Likewise. * dwarf2dbg.c: Likewise. * macro.c: Likewise. * remap.c: Likewise. * stabs.c: Likewise. * symbols.c: Likewise. * config/obj-elf.c: Likewise. * config/tc-aarch64.c: Likewise. * config/tc-arc.c: Likewise. * config/tc-arm.c: Likewise. * config/tc-avr.c: Likewise. * config/tc-ia64.c: Likewise. * config/tc-mips.c: Likewise. * config/tc-msp430.c: Likewise. * config/tc-nds32.c: Likewise. * config/tc-ppc.c: Likewise. * config/tc-sh.c: Likewise. * config/tc-tic30.c: Likewise. * config/tc-tic54x.c: Likewise. * config/tc-xstormy16.c: Likewise. * config/te-vms.c: Likewise. * configure: Regenerate. ld * emultempl/msp430.em: Replace use of alloca with call to xmalloc. * plugin.c: Likewise. * pe-dll.c: Likewise.
Diffstat (limited to 'gas/config/te-vms.c')
-rw-r--r--gas/config/te-vms.c58
1 files changed, 43 insertions, 15 deletions
diff --git a/gas/config/te-vms.c b/gas/config/te-vms.c
index 884e0a3..36752c3 100644
--- a/gas/config/te-vms.c
+++ b/gas/config/te-vms.c
@@ -115,7 +115,8 @@ vms_file_stats_name (const char *dirname,
char *rfo,
int *ver)
{
- char fullname[strlen (dirname) + strlen (filename) + 1];
+ char * fullname;
+
#ifdef VMS
struct FAB fab;
struct NAM nam;
@@ -168,9 +169,7 @@ vms_file_stats_name (const char *dirname,
return 0;
}
- strcpy (fullname, dirname);
- strcat (fullname, filename);
-
+ fullname = concat (dirname, filename, NULL);
tryfile = to_vms_file_spec (fullname);
/* Allocate and initialize a FAB and NAM structures. */
@@ -188,14 +187,20 @@ vms_file_stats_name (const char *dirname,
/* Validate filespec syntax and device existence. */
status = SYS$PARSE (&fab, 0, 0);
if ((status & 1) != 1)
- return 1;
+ {
+ free (fullname);
+ return 1;
+ }
file.string[nam.nam$b_esl] = 0;
/* Find matching filespec. */
status = SYS$SEARCH (&fab, 0, 0);
if ((status & 1) != 1)
- return 1;
+ {
+ free (fullname);
+ return 1;
+ }
file.string[nam.nam$b_esl] = 0;
result.string[result.length=nam.nam$b_rsl] = 0;
@@ -206,7 +211,10 @@ vms_file_stats_name (const char *dirname,
chan = 0;
status = SYS$ASSIGN (&devicedsc, &chan, 0, 0, 0);
if ((status & 1) != 1)
- return 1;
+ {
+ free (fullname);
+ return 1;
+ }
/* Initialize the FIB and fill in the directory id field. */
memset (&fib, 0, sizeof (fib));
@@ -224,22 +232,39 @@ vms_file_stats_name (const char *dirname,
= SYS$QIOW (0, chan, IO$_ACCESS|IO$M_ACCESS, &iosb, 0, 0,
&fibdsc, &filedsc, &result.length, &resultdsc, &atrlst, 0);
if ((status & 1) != 1)
- return 1;
+ {
+ free (fullname);
+ return 1;
+ }
+
if ((iosb.status & 1) != 1)
- return 1;
+ {
+ free (fullname);
+ return 1;
+ }
result.string[result.length] = 0;
status = SYS$QIOW (0, chan, IO$_DEACCESS, &iosb, 0, 0, &fibdsc, 0, 0, 0,
&atrlst, 0);
if ((status & 1) != 1)
- return 1;
+ {
+ free (fullname);
+ return 1;
+ }
+
if ((iosb.status & 1) != 1)
- return 1;
+ {
+ free (fullname);
+ return 1;
+ }
/* Deassign the channel and exit. */
status = SYS$DASSGN (chan);
if ((status & 1) != 1)
- return 1;
+ {
+ free (fullname);
+ return 1;
+ }
if (cdt) *cdt = create;
if (siz) *siz = (512 * 65536 * recattr.fat$w_efblkh) +
@@ -253,11 +278,13 @@ vms_file_stats_name (const char *dirname,
struct tm *ts;
long long gmtoff, secs, nsecs;
- strcpy (fullname, dirname);
- strcat (fullname, filename);
+ fullname = concat (dirname, filename, NULL);
if ((stat (fullname, &buff)) != 0)
- return 1;
+ {
+ free (fullname);
+ return 1;
+ }
if (cdt)
{
@@ -308,6 +335,7 @@ vms_file_stats_name (const char *dirname,
*ver = 1;
#endif /* VMS */
+ free (fullname);
return 0;
}