diff --git a/host/arch/arm/lib/crossystem_arch.c b/host/arch/arm/lib/crossystem_arch.c
index 99b8689..b5422de 100644
--- a/host/arch/arm/lib/crossystem_arch.c
+++ b/host/arch/arm/lib/crossystem_arch.c
@@ -5,6 +5,7 @@
 
 #include <stdio.h>
 #include <string.h>
+#include <stddef.h>
 #include <stdlib.h>
 #include <linux/fs.h>
 #include <sys/types.h>
@@ -533,7 +534,8 @@
     return -1;
 }
 
-const char* VbGetArchPropertyString(const char* name, char* dest, int size) {
+const char* VbGetArchPropertyString(const char* name, char* dest,
+                                    size_t size) {
   char *str = NULL;
   char *rv = NULL;
   char *prop = NULL;
diff --git a/host/arch/x86/lib/crossystem_arch.c b/host/arch/x86/lib/crossystem_arch.c
index 9398a35..2b379a7 100644
--- a/host/arch/x86/lib/crossystem_arch.c
+++ b/host/arch/x86/lib/crossystem_arch.c
@@ -7,6 +7,7 @@
 #include <dirent.h>
 #include <errno.h>
 #include <linux/nvram.h>
+#include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <string.h>
@@ -671,7 +672,8 @@
 }
 
 
-const char* VbGetArchPropertyString(const char* name, char* dest, int size) {
+const char* VbGetArchPropertyString(const char* name, char* dest,
+                                    size_t size) {
 
   if (!strcasecmp(name,"arch")) {
     return StrCopy(dest, "x86", size);
diff --git a/host/include/crossystem.h b/host/include/crossystem.h
index c116b0c..25b9cc0 100644
--- a/host/include/crossystem.h
+++ b/host/include/crossystem.h
@@ -10,6 +10,12 @@
 extern "C" {
 #endif
 
+#include <stddef.h>
+
+/* Recommended size for string property buffers used with
+ * VbGetSystemPropertyString(). */
+#define VB_MAX_STRING_PROPERTY     ((size_t) 8192)
+
 /* Reads a system property integer.
  *
  * Returns the property value, or -1 if error. */
@@ -19,8 +25,12 @@
  * specified size.  Returned string will be null-terminated.  If the
  * buffer is too small, the returned string will be truncated.
  *
+ * The caller can expect an un-truncated value if the size provided is
+ * at least VB_MAX_STRING_PROPERTY.
+ *
  * Returns the passed buffer, or NULL if error. */
-const char* VbGetSystemPropertyString(const char* name, char* dest, int size);
+const char* VbGetSystemPropertyString(const char* name, char* dest,
+                                      size_t size);
 
 /* Sets a system property integer.
  *
@@ -29,6 +39,9 @@
 
 /* Set a system property string.
  *
+ * The maximum length of the value accepted depends on the specific
+ * property, not on VB_MAX_STRING_PROPERTY.
+ *
  * Returns 0 if success, -1 if error. */
 int VbSetSystemPropertyString(const char* name, const char* value);
 
diff --git a/host/lib/crossystem.c b/host/lib/crossystem.c
index b482433..b496259 100644
--- a/host/lib/crossystem.c
+++ b/host/lib/crossystem.c
@@ -3,6 +3,7 @@
  * found in the LICENSE file.
  */
 
+#include <stddef.h>
 #include <stdio.h>
 #include <string.h>
 #include <sys/types.h>
@@ -69,7 +70,7 @@
 
 /* Return true if the FWID starts with the specified string. */
 int FwidStartsWith(const char *start) {
-  char fwid[128];
+  char fwid[VB_MAX_STRING_PROPERTY];
   if (!VbGetSystemPropertyString("fwid", fwid, sizeof(fwid)))
     return 0;
 
@@ -492,7 +493,8 @@
 }
 
 
-const char* VbGetSystemPropertyString(const char* name, char* dest, int size) {
+const char* VbGetSystemPropertyString(const char* name, char* dest,
+                                      size_t size) {
   static const char unknown_string[] = "unknown";
 
   /* Check architecture-dependent properties first */
diff --git a/host/lib/include/crossystem_arch.h b/host/lib/include/crossystem_arch.h
index 4044c74..50198b0 100644
--- a/host/lib/include/crossystem_arch.h
+++ b/host/lib/include/crossystem_arch.h
@@ -8,6 +8,8 @@
 #ifndef VBOOT_REFERENCE_CROSSYSTEM_ARCH_H_
 #define VBOOT_REFERENCE_CROSSYSTEM_ARCH_H_
 
+#include <stddef.h>
+
 #include "vboot_nvstorage.h"
 #include "vboot_struct.h"
 
@@ -76,7 +78,7 @@
  * will be truncated.
  *
  * Returns the passed buffer, or NULL if error. */
-const char* VbGetArchPropertyString(const char* name, char* dest, int size);
+const char* VbGetArchPropertyString(const char* name, char* dest, size_t size);
 
 /* Set an architecture-specific system property integer.
  *
diff --git a/utility/crossystem.c b/utility/crossystem.c
index d7007ee..520f7fd 100644
--- a/utility/crossystem.c
+++ b/utility/crossystem.c
@@ -11,9 +11,6 @@
 
 #include "crossystem.h"
 
-/* Max length of a string parameter */
-#define MAX_STRING 8192
-
 /*
  * Call arch specific init, if provided, otherwise use the 'weak' stub.
  */
@@ -153,7 +150,7 @@
  * Returns 0 if success (match), non-zero if error (mismatch). */
 int CheckParam(const Param* p, char* expect) {
   if (p->flags & IS_STRING) {
-    char buf[MAX_STRING];
+    char buf[VB_MAX_STRING_PROPERTY];
     const char* v = VbGetSystemPropertyString(p->name, buf, sizeof(buf));
     if (!v || 0 != strcmp(v, expect))
       return 1;
@@ -175,7 +172,7 @@
  * Returns 0 if success, non-zero if error. */
 int PrintParam(const Param* p) {
   if (p->flags & IS_STRING) {
-    char buf[MAX_STRING];
+    char buf[VB_MAX_STRING_PROPERTY];
     const char* v = VbGetSystemPropertyString(p->name, buf, sizeof(buf));
     if (!v)
       return 1;
@@ -197,7 +194,7 @@
 int PrintAllParams(int force_all) {
   const Param* p;
   int retval = 0;
-  char buf[MAX_STRING];
+  char buf[VB_MAX_STRING_PROPERTY];
   const char* value;
 
   for (p = sys_param_list; p->name; p++) {
