#endif
+/**
+ * Upper bound for value sizes, based on gethostname(2):
+ *
+ * SUS2 guarantees that "Host names are limited to 255 bytes".
+ *
+ * We can't modify MAX_VALUE_LEN since it's used in wire-level definitions
+ * (such as PartitionEntry).
+ */
+#define GUESTINFO_MAX_VALUE_SIZE 256
+
+MY_ASSERTS(GI_SIZE_ASSERTS,
+ ASSERT_ON_COMPILE(GUESTINFO_MAX_VALUE_SIZE >= MAX_VALUE_LEN);
+)
+
/**
* Default poll interval is 30s (in milliseconds).
*/
*/
typedef struct _GuestInfoCache{
- char value[INFO_MAX][MAX_VALUE_LEN]; /* Stores values of all key-value pairs. */
+ /* Stores values of all key-value pairs. */
+ char value[INFO_MAX][GUESTINFO_MAX_VALUE_SIZE];
NicInfoV3 *nicInfo;
GuestDiskInfo *diskInfo;
} GuestInfoCache;
static gboolean
GuestInfoGather(gpointer data)
{
- char name[255];
- char osNameFull[MAX_VALUE_LEN];
- char osName[MAX_VALUE_LEN];
+ char name[GUESTINFO_MAX_VALUE_SIZE];
+ char osNameFull[GUESTINFO_MAX_VALUE_SIZE];
+ char osName[GUESTINFO_MAX_VALUE_SIZE];
gboolean disableQueryDiskInfo;
NicInfoV3 *nicInfo = NULL;
GuestDiskInfo *diskInfo = NULL;
}
/* Update the value in the cache as well. */
- Str_Strcpy(gInfoCache.value[infoType], (char *)info, MAX_VALUE_LEN);
+ Str_Strcpy(gInfoCache.value[infoType],
+ (char *)info,
+ sizeof gInfoCache.value[infoType]);
break;
case INFO_IPADDRESS: