summaryrefslogtreecommitdiff
path: root/packages/udev/udev-065/fix-alignment.patch
blob: 8c7b8b5ac56e4884419044ad8b03200622c9c90c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
diff --git a/udev_rules_parse.c b/udev_rules_parse.c
--- a/udev_rules_parse.c
+++ b/udev_rules_parse.c
@@ -241,6 +241,7 @@ static int add_to_rules(struct udev_rule
 	int valid;
 	char *linepos;
 	char *attr;
+	size_t padding;
 	int retval;
 
 	/* get all the keys */
@@ -506,6 +507,11 @@ static int add_to_rules(struct udev_rule
 
 	/* grow buffer and add rule */
 	rule_size = sizeof(struct udev_rule) + rule->bufsize;
+	padding = (sizeof(size_t) - rule_size % sizeof(size_t)) % sizeof(size_t);
+	dbg("add %zi padding bytes", padding);
+	rule_size += padding;
+	rule->bufsize += padding;
+
 	rules->buf = realloc(rules->buf, rules->bufsize + rule_size);
 	if (!rules->buf) {
 		err("realloc failed");