summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2012-11-05 19:36:30 +0100
committerAndrew Bartlett <abartlet@samba.org>2012-11-06 08:27:44 +1100
commitec3cbb6c476698523c9b5ac047787df101746891 (patch)
treea2a8df4e4f97eba007e6048cb0a120e6bed138ff
parentd02c8ba122cef7d8b254e5be3ae757eb3bb14235 (diff)
downloadsamba-ec3cbb6c476698523c9b5ac047787df101746891.tar.gz
samba-ec3cbb6c476698523c9b5ac047787df101746891.tar.bz2
samba-ec3cbb6c476698523c9b5ac047787df101746891.zip
wafsamba.abi: Fix abi_match with both excludes and includes.
This fixes a regression introduced by 9c3e294400234ebdf9b98031bae583524fd0b0ac which caused internal symbols in libldb to be exposed. Bug: https://bugzilla.samba.org/show_bug.cgi?id=9357 Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Stephen Gallagher <sgallagh@redhat.com>
-rw-r--r--buildtools/wafsamba/samba_abi.py6
-rw-r--r--buildtools/wafsamba/tests/test_abi.py17
2 files changed, 20 insertions, 3 deletions
diff --git a/buildtools/wafsamba/samba_abi.py b/buildtools/wafsamba/samba_abi.py
index c325b3323e..488dab8837 100644
--- a/buildtools/wafsamba/samba_abi.py
+++ b/buildtools/wafsamba/samba_abi.py
@@ -191,12 +191,12 @@ def abi_write_vscript(f, libname, current_version, versions, symmap, abi_match):
f.write("\t\t%s;\n" % x)
else:
f.write("\t\t*;\n")
- if len(local_abi) > 0:
+ if abi_match != ["*"]:
f.write("\tlocal:\n")
for x in local_abi:
f.write("\t\t%s;\n" % x[1:])
- elif abi_match != ["*"]:
- f.write("\tlocal: *;\n")
+ if len(global_abi) > 0:
+ f.write("\t\t*;\n")
f.write("};\n")
diff --git a/buildtools/wafsamba/tests/test_abi.py b/buildtools/wafsamba/tests/test_abi.py
index 42c4697cde..bba78c1ba0 100644
--- a/buildtools/wafsamba/tests/test_abi.py
+++ b/buildtools/wafsamba/tests/test_abi.py
@@ -101,3 +101,20 @@ MYLIB_0.1 {
\t\texc_*;
};
""")
+
+ def test_excludes_and_includes(self):
+ f = StringIO()
+ abi_write_vscript(f, "MYLIB", "1.0", [], {
+ "pub_foo": "1.0",
+ "exc_bar": "1.0",
+ "other": "1.0"
+ }, ["pub_*", "!exc_*"])
+ self.assertEquals(f.getvalue(), """\
+1.0 {
+\tglobal:
+\t\tpub_*;
+\tlocal:
+\t\texc_*;
+\t\t*;
+};
+""")