blob: a75dd3b46ea72d3f8b1b9d66dbfc951c10042222 (
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
From 9f08064fef75ce02df9b6133d240c0fa84df458e Mon Sep 17 00:00:00 2001
Message-ID: <9f08064fef75ce02df9b6133d240c0fa84df458e.1760957586.git.sam@gentoo.org>
From: "Jose E. Marchesi" <jose.marchesi@oracle.com>
Date: Mon, 25 Apr 2022 09:32:09 +0200
Subject: [PATCH 01/10] db: fix rec_db_set crash with empty databases
2022-04-25 Jose E. Marchesi <jemarch@gnu.org>
* src/rec-db.c (rec_db_set): Avoid segfault with databases with no
record sets.
* torture/utils/recset.sh: New test.
---
ChangeLog | 6 ++++++
src/rec-db.c | 2 +-
torture/utils/recset.sh | 8 ++++++++
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index eb79621..5527ba2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2022-04-25 Jose E. Marchesi <jemarch@gnu.org>
+
+ * src/rec-db.c (rec_db_set): Avoid segfault with databases with no
+ record sets.
+ * torture/utils/recset.sh: New test.
+
2022-04-16 Jose E. Marchesi <jemarch@gnu.org>
* configure.ac: Bump version to 1.9.
diff --git a/src/rec-db.c b/src/rec-db.c
index 1d91441..e90a734 100644
--- a/src/rec-db.c
+++ b/src/rec-db.c
@@ -1431,7 +1431,7 @@ bool rec_db_set (rec_db_t db,
rset = rec_db_get_rset (db, 0);
/* Don't process empty record sets. */
- if (rec_rset_num_records (rset) == 0)
+ if (!rset || rec_rset_num_records (rset) == 0)
return true;
/* If the user requested to manipulate random records then calculate
diff --git a/torture/utils/recset.sh b/torture/utils/recset.sh
index f44ee59..d73d530 100755
--- a/torture/utils/recset.sh
+++ b/torture/utils/recset.sh
@@ -98,10 +98,18 @@ field2: value32
field3: value33
'
+test_declare_input_file empty ''
+
#
# Declare tests.
#
+test_tool recset-empty ok \
+ recset \
+ '' \
+ empty \
+ ''
+
test_tool recset-append-field ok \
recset \
'-n 0 -f foo -a bar' \
--
2.51.1
|