summaryrefslogtreecommitdiffstats
path: root/usr.bin/brandelf
diff options
context:
space:
mode:
authorjoerg <joerg@FreeBSD.org>1997-02-09 20:35:54 +0000
committerjoerg <joerg@FreeBSD.org>1997-02-09 20:35:54 +0000
commitbd4abbf5cc3514deafffe6ed2a426721baf39557 (patch)
tree73ea711b2f13601b8c7bdce6f4fd70536bd81b0a /usr.bin/brandelf
parentdf55a26f6588556d0f4d560fee27eaa42c78c122 (diff)
downloadFreeBSD-src-bd4abbf5cc3514deafffe6ed2a426721baf39557.zip
FreeBSD-src-bd4abbf5cc3514deafffe6ed2a426721baf39557.tar.gz
Add a manpage for brandelf(1). Minor stylistic fixes, and a buffer
overrun fix, too. Submitted by: John-Mark Gurney <jmg@nike.efn.org>
Diffstat (limited to 'usr.bin/brandelf')
-rw-r--r--usr.bin/brandelf/Makefile2
-rw-r--r--usr.bin/brandelf/brandelf.183
-rw-r--r--usr.bin/brandelf/brandelf.c21
3 files changed, 98 insertions, 8 deletions
diff --git a/usr.bin/brandelf/Makefile b/usr.bin/brandelf/Makefile
index 8fbff96..3561ec0 100644
--- a/usr.bin/brandelf/Makefile
+++ b/usr.bin/brandelf/Makefile
@@ -1,5 +1,3 @@
PROG= brandelf
-NOMAN= brandelf.1
-
.include <bsd.prog.mk>
diff --git a/usr.bin/brandelf/brandelf.1 b/usr.bin/brandelf/brandelf.1
new file mode 100644
index 0000000..ba5aab3
--- /dev/null
+++ b/usr.bin/brandelf/brandelf.1
@@ -0,0 +1,83 @@
+.\" Copyright (c) 1997
+.\" John-Mark Gurney. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the author nor the names of any co-contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY John-Mark Gurney AND CONTRIBUTORS ``AS IS''
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"
+.Dd February 6, 1997
+.Dt BRANDELF 1
+.Os FreeBSD
+.Sh NAME
+.Nm brandelf
+.Nd mark an ELF binary for a specific ABI
+.Sh SYNOPSIS
+.Nm brandelf
+.Op Fl v
+.Op Fl t Ar string
+.Ar file ...
+.Sh DESCRIPTION
+This command marks an ELF binary to be run under a certain ABI for FreeBSD.
+.Pp
+The options are as follows:
+.Bl -tag -width Fl
+.It Fl v
+turns on verbose reporting
+.It Fl t Ar string
+Brands the given ELF binaries with
+.Ar string
+as the ABI type. Currently supported ABI's are
+.Dq FreeBSD
+and
+.Dq Linux .
+.It Ar file
+If
+.Fl t Ar string
+is given it will brand
+.Ar file
+with
+.Ar string ,
+otherwise it will simply display the branding of
+.Ar file .
+.El
+.Sh EXAMPLES
+The following is an example of a typical usage
+of the
+.Nm
+command:
+.Pp
+.Dl % brandelf file
+.Dl % brandelf -t Linux file
+.Sh DIAGNOSTICS
+Exist status is 0 on success, and 1 if the command
+fails if a file doesn't exist, is too short, or fails to brand properly.
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHOR
+This
+manual page was written by John-Mark Gurney
+.Aq gurney_j@efn.org .
diff --git a/usr.bin/brandelf/brandelf.c b/usr.bin/brandelf/brandelf.c
index 6f04450..97da3e3 100644
--- a/usr.bin/brandelf/brandelf.c
+++ b/usr.bin/brandelf/brandelf.c
@@ -30,17 +30,19 @@
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
#include <fcntl.h>
#include <sys/imgact_elf.h>
-int usage();
+int usage(void);
+int
main(int argc, char **argv)
{
- extern char *optarg;
- extern int optind;
- char type[10] = "FreeBSD";
+ const char *type = "FreeBSD";
+ int retval = 0;
int ch, change = 0, verbose = 0;
while ((ch = getopt(argc, argv, "t:v")) != EOF)
@@ -50,7 +52,7 @@ main(int argc, char **argv)
break;
case 't':
change = 1;
- strcpy(type, optarg);
+ type = optarg;
break;
default:
usage();
@@ -68,17 +70,20 @@ main(int argc, char **argv)
if ((fd = open(argv[0], O_RDWR, 0)) < 0) {
fprintf(stderr, "No such file %s.\n", argv[0]);
+ retval = 1;
goto fail;
}
if (read(fd, buffer, EI_NINDENT) < EI_NINDENT) {
fprintf(stderr, "File '%s' too short.\n", argv[0]);
+ retval = 1;
goto fail;
}
if (buffer[0] != ELFMAG0 || buffer[1] != ELFMAG1 ||
buffer[2] != ELFMAG2 || buffer[3] != ELFMAG3) {
fprintf(stderr, "File '%s' is not ELF format.\n",
argv[0]);
+ retval = 1;
goto fail;
}
if (!change) {
@@ -97,6 +102,7 @@ main(int argc, char **argv)
lseek(fd, 0, SEEK_SET);
if (write(fd, buffer, EI_NINDENT) != EI_NINDENT) {
fprintf(stderr, "Error writing %s\n", argv[0]);
+ retval = 1;
goto fail;
}
}
@@ -104,10 +110,13 @@ fail:
argc--;
argv++;
}
+
+ return retval;
}
int
-usage()
+usage(void)
{
fprintf(stderr, "Usage: brandelf [-t string] file ...\n");
+ exit(1);
}
OpenPOWER on IntegriCloud