ovsdb: Fix segfault in ovsdb_file_txn_row_from_json().
authorBen Pfaff <blp@nicira.com>
Wed, 6 Jul 2011 21:22:42 +0000 (14:22 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 6 Jul 2011 21:22:42 +0000 (14:22 -0700)
If 'error' is nonnull then we destroy the row, so we must not try to reuse
the row immediately after that.

Support request #6155.
Repoted-by: Geoff White <gwhite@nicira.com>
ovsdb/file.c

index 9eea460d4dd993cc15fff3e30ffc9d03c2fd6444..05a4067a5759382276ee0f28d5ee5b83d799912e 100644 (file)
@@ -333,10 +333,9 @@ ovsdb_file_txn_row_from_json(struct ovsdb_txn *txn, struct ovsdb_table *table,
         error = ovsdb_file_update_row_from_json(new, converting, json);
         if (error) {
             ovsdb_row_destroy(new);
+        } else {
+            ovsdb_txn_row_insert(txn, new);
         }
-
-        ovsdb_txn_row_insert(txn, new);
-
         return error;
     }
 }