Skip to content

Commit

Permalink
Turn local modifications of mocklibc into patches and apply them via …
Browse files Browse the repository at this point in the history
…diff_files

The local copy of mocklibc was changed in
63ee649
5b8cd1a
0d78d1e

Turn those into patches and apply them via the diff_files mechanism.
This requires Meson 0.63.0, so bump the version accordingly.

https://mesonbuild.com/Wrap-dependency-system-manual.html#diff-files
  • Loading branch information
mbiebl committed Mar 16, 2024
1 parent d218055 commit f40844f
Show file tree
Hide file tree
Showing 5 changed files with 118 additions and 1 deletion.
2 changes: 1 addition & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ project(
'prefix=/usr',
'cpp_std=c++17',
],
meson_version: '>= 0.50.0',
meson_version: '>= 0.63.0',
)

pk_version = meson.project_version()
Expand Down
2 changes: 2 additions & 0 deletions subprojects/mocklibc.wrap
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ source_hash = b2236a6af1028414783e9734a46ea051916ec226479d6a55a3bb823bff68f120
patch_url = https://wrapdb.mesonbuild.com/v1/projects/mocklibc/1.0/2/get_zip
patch_filename = mocklibc-1.0-2-wrap.zip
patch_hash = 0280f96a2eeb3c023e5acf4e00cef03d362868218d4a85347ea45137c0ef6c56

diff_files = 0001.patch, 0002.patch, 0003.patch
32 changes: 32 additions & 0 deletions subprojects/packagefiles/0001.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
commit 63ee649bd14c5dfa7985840061097bbac01ab721
Author: Miloslav Trmač <[email protected]>
Date: Sat Apr 13 03:19:17 2013 +0200

Fix various memory leaks.

The XML_ParserCreate_MM one was found by Florian Weimer in
https://bugzilla.redhat.com/show_bug.cgi?id=888728 .

This should cover everything found by valgrind on the JS authority
test, augmented with a call to
polkit_backend_authority_enumerate_actions() to verify the
XML_ParserCreate_MM case.

https://bugs.freedesktop.org/show_bug.cgi?id=63492

diff --git a/src/netgroup.c b/test/mocklibc/src/netgroup.c
index f2ee857..bc99555 100644
--- a/src/netgroup.c
+++ b/src/netgroup.c
@@ -122,7 +122,10 @@ struct netgroup *netgroup_parse_all() {
char * line = NULL;
ssize_t line_size = getline(&line, &line_alloc, stream);
if (line_size == -1)
- break;
+ {
+ free(line);
+ break;
+ }

struct netgroup *nextgroup = netgroup_parse_line(line);
free(line);
23 changes: 23 additions & 0 deletions subprojects/packagefiles/0002.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
commit 5b8cd1a38696e7398e91863565dcfba792cbc744
Author: Colin Walters <[email protected]>
Date: Wed Jun 3 16:31:12 2015 -0400

tests: Correct boundary test for overflow

The offset has to be strictly less than the max.

https://bugs.freedesktop.org/show_bug.cgi?id=87716

diff --git a/src/netgroup.c b/test/mocklibc/src/netgroup.c
index bc99555..06a8a89 100644
--- a/src/netgroup.c
+++ b/src/netgroup.c
@@ -326,7 +326,7 @@ struct entry *netgroup_iter_next(struct netgroup_iter *iter) {

// Grow the stack
iter->depth++;
- if (iter->depth > NETGROUP_MAX_DEPTH) {
+ if (iter->depth >= NETGROUP_MAX_DEPTH) {
iter->depth = -1;
return NULL; // Too much recursion
}
60 changes: 60 additions & 0 deletions subprojects/packagefiles/0003.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
commit 0d78d1e4bf5ab3ce11678005b220aac0cfc5bee5
Author: Vincent Mihalkovic <[email protected]>
Date: Fri Mar 8 14:04:33 2024 +0100

mocklibc: move the print_indent function to the file where it is used

This fixes build error with GCC >= 14 and clang >= 17,
failing on:
```
../subprojects/mocklibc-1.0/src/netgroup-debug.c:25:3: error: implicit declaration of function ‘print_indent’ [-Wimplicit-function-declaration]
25 | print_indent(stream, indent);
| ^~~~~~~~~~~~
```

Closes: #6

diff --git a/src/netgroup-debug.c b/src/netgroup-debug.c
index 81d6e72..46e5b25 100644
--- a/src/netgroup-debug.c
+++ b/src/netgroup-debug.c
@@ -21,6 +21,17 @@
#include <stdio.h>
#include <stdlib.h>

+/**
+ * Print a varaible indentation to the stream.
+ * @param stream Stream to print to
+ * @param indent Number of indents to use
+ */
+static void print_indent(FILE *stream, unsigned int indent) {
+ int i;
+ for (i = 0; i < indent; i++)
+ fprintf(stream, " ");
+}
+
void netgroup_debug_print_entry(struct entry *entry, FILE *stream, unsigned int indent) {
print_indent(stream, indent);

diff --git a/src/netgroup.c b/src/netgroup.c
index 06a8a89..e16e451 100644
--- a/src/netgroup.c
+++ b/src/netgroup.c
@@ -71,17 +71,6 @@ static char *parser_copy_word(char **cur) {
return result;
}

-/**
- * Print a varaible indentation to the stream.
- * @param stream Stream to print to
- * @param indent Number of indents to use
- */
-void print_indent(FILE *stream, unsigned int indent) {
- int i;
- for (i = 0; i < indent; i++)
- fprintf(stream, " ");
-}
-
/**
* Connect entries with 'child' type to their child entries.
* @param headentry Head of list of entries that need to be connected

0 comments on commit f40844f

Please sign in to comment.