Page MenuHomeFreeBSD

D26235.diff
No OneTemporary

D26235.diff

Index: head/stand/common/bootstrap.h
===================================================================
--- head/stand/common/bootstrap.h
+++ head/stand/common/bootstrap.h
@@ -68,7 +68,6 @@
/* misc.c */
char *unargv(int argc, char *argv[]);
-void hexdump(caddr_t region, size_t len);
size_t strlenout(vm_offset_t str);
char *strdupout(vm_offset_t str);
void kern_bzero(vm_offset_t dest, size_t len);
Index: head/stand/common/misc.c
===================================================================
--- head/stand/common/misc.c
+++ head/stand/common/misc.c
@@ -169,46 +169,6 @@
return (buf);
}
-/*
- * Display a region in traditional hexdump format.
- */
-void
-hexdump(caddr_t region, size_t len)
-{
- caddr_t line;
- int x, c;
- char lbuf[80];
-#define emit(fmt, args...) {sprintf(lbuf, fmt , ## args); pager_output(lbuf);}
-
- pager_open();
- for (line = region; line < (region + len); line += 16) {
- emit("%08lx ", (long) line);
-
- for (x = 0; x < 16; x++) {
- if ((line + x) < (region + len)) {
- emit("%02x ", *(uint8_t *)(line + x));
- } else {
- emit("-- ");
- }
- if (x == 7)
- emit(" ");
- }
- emit(" |");
- for (x = 0; x < 16; x++) {
- if ((line + x) < (region + len)) {
- c = *(uint8_t *)(line + x);
- if ((c < ' ') || (c > '~')) /* !isprint(c) */
- c = '.';
- emit("%c", c);
- } else {
- emit(" ");
- }
- }
- emit("|\n");
- }
- pager_close();
-}
-
void
dev_cleanup(void)
{
Index: head/stand/libsa/Makefile
===================================================================
--- head/stand/libsa/Makefile
+++ head/stand/libsa/Makefile
@@ -13,8 +13,9 @@
LIB?= sa
# standalone components and stuff we have modified locally
-SRCS+= gzguts.h zutil.h __main.c abort.c assert.c bcd.c environment.c getopt.c gets.c \
- globals.c pager.c panic.c printf.c strdup.c strerror.c \
+SRCS+= gzguts.h zutil.h __main.c abort.c assert.c bcd.c environment.c \
+ getopt.c gets.c globals.c \
+ hexdump.c pager.c panic.c printf.c strdup.c strerror.c \
random.c sbrk.c twiddle.c zalloc.c zalloc_malloc.c
# private (pruned) versions of libc string functions
Index: head/stand/libsa/hexdump.c
===================================================================
--- head/stand/libsa/hexdump.c
+++ head/stand/libsa/hexdump.c
@@ -0,0 +1,79 @@
+/*-
+ * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <string.h>
+#include <stand.h>
+
+/*
+ * Display a region in traditional hexdump format.
+ */
+void
+hexdump(caddr_t region, size_t len)
+{
+ caddr_t line;
+ int x, c;
+#ifdef HEXDUMP_PAGER
+ /* pager causes linking issues for some apps */
+#define emit(fmt, args...) {sprintf(lbuf, fmt , ## args); pager_output(lbuf);}
+ char lbuf[80];
+
+ pager_open();
+#else
+#define emit(fmt, args...) printf(fmt, ## args)
+#endif
+
+ for (line = region; line < (region + len); line += 16) {
+ emit("%08lx ", (long) line);
+
+ for (x = 0; x < 16; x++) {
+ if ((line + x) < (region + len)) {
+ emit("%02x ", *(uint8_t *)(line + x));
+ } else {
+ emit("-- ");
+ }
+ if (x == 7)
+ emit(" ");
+ }
+ emit(" |");
+ for (x = 0; x < 16; x++) {
+ if ((line + x) < (region + len)) {
+ c = *(uint8_t *)(line + x);
+ if ((c < ' ') || (c > '~')) /* !isprint(c) */
+ c = '.';
+ emit("%c", c);
+ } else {
+ emit(" ");
+ }
+ }
+ emit("|\n");
+ }
+#ifdef HEXDUMP_PAGER
+ pager_close();
+#endif
+}
Index: head/stand/libsa/pkgfs.c
===================================================================
--- head/stand/libsa/pkgfs.c
+++ head/stand/libsa/pkgfs.c
@@ -60,7 +60,7 @@
};
#define PKG_BUFSIZE 512
-#define PKG_MAXCACHESZ (16384 * 3)
+#define PKG_MAXCACHESZ (512 * 1024)
#define PKG_FILEEXT ".tgz"
Index: head/stand/libsa/stand.h
===================================================================
--- head/stand/libsa/stand.h
+++ head/stand/libsa/stand.h
@@ -470,4 +470,7 @@
*/
caddr_t ptov(uintptr_t);
+/* hexdump.c */
+void hexdump(caddr_t region, size_t len);
+
#endif /* STAND_H */
Index: head/stand/libsa/zalloc_malloc.c
===================================================================
--- head/stand/libsa/zalloc_malloc.c
+++ head/stand/libsa/zalloc_malloc.c
@@ -52,6 +52,10 @@
static void *Malloc_align(size_t, size_t);
+#ifndef MIN
+# define MIN(a,b) ((a) <= (b)) ? (a) : (b)
+#endif
+
void *
Malloc(size_t bytes, const char *file __unused, int line __unused)
{
@@ -119,9 +123,14 @@
ptr, file, line);
return;
}
- if (res->ga_Magic != GAMAGIC)
+ if (res->ga_Magic != GAMAGIC) {
+ size_t dump_bytes;
+
+ dump_bytes = MIN((ptr - MallocPool.mp_Base), 512);
+ hexdump(ptr - dump_bytes, dump_bytes);
panic("free: guard1 fail @ %p from %s:%d",
ptr, file, line);
+ }
res->ga_Magic = GAFREE;
#endif
#ifdef USEENDGUARD

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 13, 4:23 AM (17 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17129938
Default Alt Text
D26235.diff (6 KB)

Event Timeline