csum: Avoid misaligned data access.
[openvswitch] / lib / ofp-parse.c
index 6b53f2655179d841d8a0e80c29c5aef2de4a2fdf..20440323f7832730be65fcb4d10d629a88516aa5 100644 (file)
@@ -289,8 +289,8 @@ str_to_action(char *str, struct ofpbuf *b)
 
             b->size -= sizeof nan->note;
             while (arg && *arg != '\0') {
-                int high, low;
                 uint8_t byte;
+                bool ok;
 
                 if (*arg == '.') {
                     arg++;
@@ -299,16 +299,13 @@ str_to_action(char *str, struct ofpbuf *b)
                     break;
                 }
 
-                high = hexit_value(*arg++);
-                if (high >= 0) {
-                    low = hexit_value(*arg++);
-                }
-                if (high < 0 || low < 0) {
+                byte = hexits_value(arg, 2, &ok);
+                if (!ok) {
                     ovs_fatal(0, "bad hex digit in `note' argument");
                 }
-
-                byte = high * 16 + low;
                 ofpbuf_put(b, &byte, 1);
+
+                arg += 2;
             }
 
             len = b->size - start_ofs;