Module Name:    src
Committed By:   macallan
Date:           Fri Nov 15 23:41:47 UTC 2019

Modified Files:
        src/sys/arch/powerpc/powerpc: openfirm.c

Log Message:
stuff name parameters into OF_buf before calling OF
now things like ofctl work on my TiBook with FIRMWORKSBUGS


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/powerpc/powerpc/openfirm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/powerpc/openfirm.c
diff -u src/sys/arch/powerpc/powerpc/openfirm.c:1.27 src/sys/arch/powerpc/powerpc/openfirm.c:1.28
--- src/sys/arch/powerpc/powerpc/openfirm.c:1.27	Tue Jan  8 07:46:11 2019
+++ src/sys/arch/powerpc/powerpc/openfirm.c	Fri Nov 15 23:41:47 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: openfirm.c,v 1.27 2019/01/08 07:46:11 mrg Exp $	*/
+/*	$NetBSD: openfirm.c,v 1.28 2019/11/15 23:41:47 macallan Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -34,7 +34,7 @@
 #include "opt_multiprocessor.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: openfirm.c,v 1.27 2019/01/08 07:46:11 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: openfirm.c,v 1.28 2019/11/15 23:41:47 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -159,8 +159,9 @@ OF_getproplen(int handle, const char *pr
 	};
 
 	ofw_stack();
+	strncpy(OF_buf, prop, 32);
 	args.phandle = handle;
-	args.prop = prop;
+	args.prop = OF_buf;
 	if (openfirmware(&args) == -1)
 		return -1;
 	return args.proplen;
@@ -187,16 +188,17 @@ OF_getprop(int handle, const char *prop,
 	ofw_stack();
 	if (buflen > PAGE_SIZE)
 		return -1;
+	strncpy(OF_buf, prop, 32);
 	args.phandle = handle;
-	args.prop = prop;
-	args.buf = OF_buf;
+	args.prop = OF_buf;
+	args.buf = &OF_buf[33];
 	args.buflen = buflen;
 	if (openfirmware(&args) == -1)
 		return -1;
 	if (args.size > buflen)
 		args.size = buflen;
 	if (args.size > 0)
-		ofbcopy(OF_buf, buf, args.size);
+		ofbcopy(&OF_buf[33], buf, args.size);
 	return args.size;
 }
 
@@ -250,12 +252,13 @@ OF_nextprop(int handle, const char *prop
 	};
 
 	ofw_stack();
+	strncpy(OF_buf, prop, 32);
 	args.phandle = handle;
-	args.prop = prop;
-	args.buf = OF_buf;
+	args.prop = OF_buf;
+	args.buf = &OF_buf[33];
 	if (openfirmware(&args) == -1)
 		return -1;
-	strncpy(nextprop, OF_buf, 32);
+	strncpy(nextprop, &OF_buf[33], 32);
 	return args.flag;
 }
 
@@ -275,7 +278,8 @@ OF_finddevice(const char *name)
 	};
 
 	ofw_stack();
-	args.device = name;
+	strncpy(OF_buf, name, 32);
+	args.device = OF_buf;
 	if (openfirmware(&args) == -1)
 		return -1;
 	return args.phandle;

Reply via email to