summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-oe/recipes-security/bubblewrap/bubblewrap/0001-Use-stdbool.h-for-booleans.patch633
-rw-r--r--meta-oe/recipes-security/bubblewrap/bubblewrap_0.10.0.bb5
2 files changed, 637 insertions, 1 deletions
diff --git a/meta-oe/recipes-security/bubblewrap/bubblewrap/0001-Use-stdbool.h-for-booleans.patch b/meta-oe/recipes-security/bubblewrap/bubblewrap/0001-Use-stdbool.h-for-booleans.patch
new file mode 100644
index 0000000000..2566314ce3
--- /dev/null
+++ b/meta-oe/recipes-security/bubblewrap/bubblewrap/0001-Use-stdbool.h-for-booleans.patch
@@ -0,0 +1,633 @@
1From 4572dd9378c876349e02403cf7f6031c45281f85 Mon Sep 17 00:00:00 2001
2From: "Simon McVittie" <smcv@collabora.com>
3Date: Tue, 8 Apr 2025 16:29:18 +0900
4Subject: [PATCH] Use stdbool.h for booleans
5
6* backport fix from:
7 https://github.com/containers/bubblewrap/pull/660
8 But patch rework for this version.
9 In gcc 15, bool became a reserved keyword in C23, causing conflicts with our custom bool definition.
10
11 See also, https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=55e3bd376b2214e200fa76d12b67ff259b06c212
12
13* to fix:
14 http://errors.yoctoproject.org/Errors/Details/851183/
15 ../bubblewrap-0.10.0/utils.h:46:13: error: 'bool' cannot be defined via 'typedef'
16 46 | typedef int bool;
17 | ^~~~
18
19Upstream-Status: Backport [https://github.com/containers/bubblewrap/pull/660]
20Signed-off-by: mark.yang <mark.yang@lge.com>
21---
22 bind-mount.c | 20 ++++----
23 bubblewrap.c | 134 +++++++++++++++++++++++++--------------------------
24 utils.c | 16 +++---
25 utils.h | 5 +-
26 4 files changed, 86 insertions(+), 89 deletions(-)
27
28diff --git a/bind-mount.c b/bind-mount.c
29index 2757cae..bf7f68d 100644
30--- a/bind-mount.c
31+++ b/bind-mount.c
32@@ -76,7 +76,7 @@ match_token (const char *token, const char *token_end, const char *str)
33 if (token == token_end)
34 return *str == 0;
35
36- return FALSE;
37+ return false;
38 }
39
40 static unsigned long
41@@ -281,12 +281,12 @@ parse_mountinfo (int proc_fd,
42 die ("Can't parse mountinfo line");
43 rest = line + consumed;
44
45- rest = skip_token (rest, TRUE); /* mountroot */
46+ rest = skip_token (rest, true); /* mountroot */
47 mountpoint = rest;
48- rest = skip_token (rest, FALSE); /* mountpoint */
49+ rest = skip_token (rest, false); /* mountpoint */
50 mountpoint_end = rest++;
51 options = rest;
52- rest = skip_token (rest, FALSE); /* vfs options */
53+ rest = skip_token (rest, false); /* vfs options */
54 options_end = rest;
55
56 *mountpoint_end = 0;
57@@ -324,7 +324,7 @@ parse_mountinfo (int proc_fd,
58 MountInfoLine *parent = by_id[this->parent_id];
59 MountInfoLine **to_sibling;
60 MountInfoLine *sibling;
61- bool covered = FALSE;
62+ bool covered = false;
63
64 if (!has_path_prefix (this->mountpoint, root_mount))
65 continue;
66@@ -333,7 +333,7 @@ parse_mountinfo (int proc_fd,
67 continue;
68
69 if (strcmp (parent->mountpoint, this->mountpoint) == 0)
70- parent->covered = TRUE;
71+ parent->covered = true;
72
73 to_sibling = &parent->first_child;
74 sibling = parent->first_child;
75@@ -344,7 +344,7 @@ parse_mountinfo (int proc_fd,
76 * covered by the sibling, and we drop it. */
77 if (has_path_prefix (this->mountpoint, sibling->mountpoint))
78 {
79- covered = TRUE;
80+ covered = true;
81 break;
82 }
83
84@@ -499,7 +499,7 @@ bind_mount_result_to_string (bind_mount_result res,
85 bool *want_errno_p)
86 {
87 char *string = NULL;
88- bool want_errno = TRUE;
89+ bool want_errno = true;
90
91 switch (res)
92 {
93@@ -521,7 +521,7 @@ bind_mount_result_to_string (bind_mount_result res,
94
95 case BIND_MOUNT_ERROR_FIND_DEST_MOUNT:
96 string = xasprintf ("Unable to find \"%s\" in mount table", failing_path);
97- want_errno = FALSE;
98+ want_errno = false;
99 break;
100
101 case BIND_MOUNT_ERROR_REMOUNT_DEST:
102@@ -557,7 +557,7 @@ die_with_bind_result (bind_mount_result res,
103 ...)
104 {
105 va_list args;
106- bool want_errno = TRUE;
107+ bool want_errno = true;
108 char *message;
109
110 fprintf (stderr, "bwrap: ");
111diff --git a/bubblewrap.c b/bubblewrap.c
112index bc75da4..1504449 100644
113--- a/bubblewrap.c
114+++ b/bubblewrap.c
115@@ -74,19 +74,19 @@ static bool opt_as_pid_1;
116
117 static const char *opt_argv0 = NULL;
118 static const char *opt_chdir_path = NULL;
119-static bool opt_assert_userns_disabled = FALSE;
120-static bool opt_disable_userns = FALSE;
121-static bool opt_unshare_user = FALSE;
122-static bool opt_unshare_user_try = FALSE;
123-static bool opt_unshare_pid = FALSE;
124-static bool opt_unshare_ipc = FALSE;
125-static bool opt_unshare_net = FALSE;
126-static bool opt_unshare_uts = FALSE;
127-static bool opt_unshare_cgroup = FALSE;
128-static bool opt_unshare_cgroup_try = FALSE;
129-static bool opt_needs_devpts = FALSE;
130-static bool opt_new_session = FALSE;
131-static bool opt_die_with_parent = FALSE;
132+static bool opt_assert_userns_disabled = false;
133+static bool opt_disable_userns = false;
134+static bool opt_unshare_user = false;
135+static bool opt_unshare_user_try = false;
136+static bool opt_unshare_pid = false;
137+static bool opt_unshare_ipc = false;
138+static bool opt_unshare_net = false;
139+static bool opt_unshare_uts = false;
140+static bool opt_unshare_cgroup = false;
141+static bool opt_unshare_cgroup_try = false;
142+static bool opt_needs_devpts = false;
143+static bool opt_new_session = false;
144+static bool opt_die_with_parent = false;
145 static uid_t opt_sandbox_uid = -1;
146 static gid_t opt_sandbox_gid = -1;
147 static int opt_sync_fd = -1;
148@@ -476,7 +476,7 @@ report_child_exit_status (int exitc, int setup_finished_fd)
149 return;
150
151 output = xasprintf ("{ \"exit-code\": %i }\n", exitc);
152- dump_info (opt_json_status_fd, output, FALSE);
153+ dump_info (opt_json_status_fd, output, false);
154 close (opt_json_status_fd);
155 opt_json_status_fd = -1;
156 close (setup_finished_fd);
157@@ -621,7 +621,7 @@ do_init (int event_fd, pid_t initial_pid)
158
159 seccomp_programs_apply ();
160
161- while (TRUE)
162+ while (true)
163 {
164 pid_t child;
165 int status;
166@@ -765,16 +765,16 @@ prctl_caps (uint32_t *caps, bool do_cap_bounding, bool do_set_ambient)
167 */
168 for (cap = 0; cap <= CAP_LAST_CAP; cap++)
169 {
170- bool keep = FALSE;
171+ bool keep = false;
172 if (cap < 32)
173 {
174 if (CAP_TO_MASK_0 (cap) & caps[0])
175- keep = TRUE;
176+ keep = true;
177 }
178 else
179 {
180 if (CAP_TO_MASK_1 (cap) & caps[1])
181- keep = TRUE;
182+ keep = true;
183 }
184
185 if (keep && do_set_ambient)
186@@ -803,11 +803,11 @@ static void
187 drop_cap_bounding_set (bool drop_all)
188 {
189 if (!drop_all)
190- prctl_caps (requested_caps, TRUE, FALSE);
191+ prctl_caps (requested_caps, true, false);
192 else
193 {
194 uint32_t no_caps[2] = {0, 0};
195- prctl_caps (no_caps, TRUE, FALSE);
196+ prctl_caps (no_caps, true, false);
197 }
198 }
199
200@@ -816,7 +816,7 @@ set_ambient_capabilities (void)
201 {
202 if (is_privileged)
203 return;
204- prctl_caps (requested_caps, FALSE, TRUE);
205+ prctl_caps (requested_caps, false, true);
206 }
207
208 /* This acquires the privileges that the bwrap will need it to work.
209@@ -846,7 +846,7 @@ acquire_privs (void)
210 if (euid != 0)
211 die ("Unexpected setuid user %d, should be 0", euid);
212
213- is_privileged = TRUE;
214+ is_privileged = true;
215 /* We want to keep running as euid=0 until at the clone()
216 * operation because doing so will make the user namespace be
217 * owned by root, which makes it not ptrace:able by the user as
218@@ -867,7 +867,7 @@ acquire_privs (void)
219 die ("Unable to set fsuid (was %d)", (int)new_fsuid);
220
221 /* We never need capabilities after execve(), so lets drop everything from the bounding set */
222- drop_cap_bounding_set (TRUE);
223+ drop_cap_bounding_set (true);
224
225 /* Keep only the required capabilities for setup */
226 set_required_caps ();
227@@ -904,7 +904,7 @@ switch_to_user_with_privs (void)
228 {
229 /* If we're in a new user namespace, we got back the bounding set, clear it again */
230 if (opt_unshare_user || opt_userns_fd != -1)
231- drop_cap_bounding_set (FALSE);
232+ drop_cap_bounding_set (false);
233
234 /* If we switched to a new user namespace it may allow other uids/gids, so switch to the target one */
235 if (opt_userns_fd != -1)
236@@ -1211,7 +1211,7 @@ setup_newroot (bool unshare_pid,
237 parent_mode &= ~0005U;
238
239 dest = get_newroot_path (op->dest);
240- if (mkdir_with_parents (dest, parent_mode, FALSE) != 0)
241+ if (mkdir_with_parents (dest, parent_mode, false) != 0)
242 die_with_error ("Can't mkdir parents for %s", op->dest);
243 }
244
245@@ -1761,7 +1761,7 @@ parse_args_recurse (int *argcp,
246 }
247
248 data_argv_copy = data_argv; /* Don't change data_argv, we need to free it */
249- parse_args_recurse (&data_argc, &data_argv_copy, TRUE, total_parsed_argc_p);
250+ parse_args_recurse (&data_argc, &data_argv_copy, true, total_parsed_argc_p);
251
252 argv += 1;
253 argc -= 1;
254@@ -1786,45 +1786,45 @@ parse_args_recurse (int *argcp,
255 */
256 opt_unshare_user_try = opt_unshare_ipc = opt_unshare_pid =
257 opt_unshare_uts = opt_unshare_cgroup_try =
258- opt_unshare_net = TRUE;
259+ opt_unshare_net = true;
260 }
261 /* Begin here the older individual --unshare variants */
262 else if (strcmp (arg, "--unshare-user") == 0)
263 {
264- opt_unshare_user = TRUE;
265+ opt_unshare_user = true;
266 }
267 else if (strcmp (arg, "--unshare-user-try") == 0)
268 {
269- opt_unshare_user_try = TRUE;
270+ opt_unshare_user_try = true;
271 }
272 else if (strcmp (arg, "--unshare-ipc") == 0)
273 {
274- opt_unshare_ipc = TRUE;
275+ opt_unshare_ipc = true;
276 }
277 else if (strcmp (arg, "--unshare-pid") == 0)
278 {
279- opt_unshare_pid = TRUE;
280+ opt_unshare_pid = true;
281 }
282 else if (strcmp (arg, "--unshare-net") == 0)
283 {
284- opt_unshare_net = TRUE;
285+ opt_unshare_net = true;
286 }
287 else if (strcmp (arg, "--unshare-uts") == 0)
288 {
289- opt_unshare_uts = TRUE;
290+ opt_unshare_uts = true;
291 }
292 else if (strcmp (arg, "--unshare-cgroup") == 0)
293 {
294- opt_unshare_cgroup = TRUE;
295+ opt_unshare_cgroup = true;
296 }
297 else if (strcmp (arg, "--unshare-cgroup-try") == 0)
298 {
299- opt_unshare_cgroup_try = TRUE;
300+ opt_unshare_cgroup_try = true;
301 }
302 /* Begin here the newer --share variants */
303 else if (strcmp (arg, "--share-net") == 0)
304 {
305- opt_unshare_net = FALSE;
306+ opt_unshare_net = false;
307 }
308 /* End --share variants, other arguments begin */
309 else if (strcmp (arg, "--chdir") == 0)
310@@ -1841,11 +1841,11 @@ parse_args_recurse (int *argcp,
311 }
312 else if (strcmp (arg, "--disable-userns") == 0)
313 {
314- opt_disable_userns = TRUE;
315+ opt_disable_userns = true;
316 }
317 else if (strcmp (arg, "--assert-userns-disabled") == 0)
318 {
319- opt_assert_userns_disabled = TRUE;
320+ opt_assert_userns_disabled = true;
321 }
322 else if (strcmp (arg, "--remount-ro") == 0)
323 {
324@@ -1975,7 +1975,7 @@ parse_args_recurse (int *argcp,
325
326 op = setup_op_new (SETUP_MOUNT_DEV);
327 op->dest = argv[1];
328- opt_needs_devpts = TRUE;
329+ opt_needs_devpts = true;
330
331 argv += 1;
332 argc -= 1;
333@@ -2425,15 +2425,15 @@ parse_args_recurse (int *argcp,
334 }
335 else if (strcmp (arg, "--new-session") == 0)
336 {
337- opt_new_session = TRUE;
338+ opt_new_session = true;
339 }
340 else if (strcmp (arg, "--die-with-parent") == 0)
341 {
342- opt_die_with_parent = TRUE;
343+ opt_die_with_parent = true;
344 }
345 else if (strcmp (arg, "--as-pid-1") == 0)
346 {
347- opt_as_pid_1 = TRUE;
348+ opt_as_pid_1 = true;
349 }
350 else if (strcmp (arg, "--cap-add") == 0)
351 {
352@@ -2441,7 +2441,7 @@ parse_args_recurse (int *argcp,
353 if (argc < 2)
354 die ("--cap-add takes an argument");
355
356- opt_cap_add_or_drop_used = TRUE;
357+ opt_cap_add_or_drop_used = true;
358
359 if (strcasecmp (argv[1], "ALL") == 0)
360 {
361@@ -2467,7 +2467,7 @@ parse_args_recurse (int *argcp,
362 if (argc < 2)
363 die ("--cap-drop takes an argument");
364
365- opt_cap_add_or_drop_used = TRUE;
366+ opt_cap_add_or_drop_used = true;
367
368 if (strcasecmp (argv[1], "ALL") == 0)
369 {
370@@ -2610,7 +2610,7 @@ parse_args (int *argcp,
371 {
372 int total_parsed_argc = *argcp;
373
374- parse_args_recurse (argcp, argvp, FALSE, &total_parsed_argc);
375+ parse_args_recurse (argcp, argvp, false, &total_parsed_argc);
376 }
377
378 static void
379@@ -2656,7 +2656,7 @@ namespace_ids_read (pid_t pid)
380 int r;
381
382 /* if we don't unshare this ns, ignore it */
383- if (do_unshare && *do_unshare == FALSE)
384+ if (do_unshare && *do_unshare == false)
385 continue;
386
387 r = fstatat (ns_fd, info->name, &st, 0);
388@@ -2691,7 +2691,7 @@ namespace_ids_write (int fd,
389 output = xasprintf (",%s\"%s-namespace\": %ju",
390 indent, info->name, nsid);
391
392- dump_info (fd, output, TRUE);
393+ dump_info (fd, output, true);
394 }
395 }
396
397@@ -2799,18 +2799,18 @@ main (int argc,
398 /* We have to do this if we weren't installed setuid (and we're not
399 * root), so let's just DWIM */
400 if (!is_privileged && getuid () != 0 && opt_userns_fd == -1)
401- opt_unshare_user = TRUE;
402+ opt_unshare_user = true;
403
404 #ifdef ENABLE_REQUIRE_USERNS
405 /* In this build option, we require userns. */
406 if (is_privileged && getuid () != 0 && opt_userns_fd == -1)
407- opt_unshare_user = TRUE;
408+ opt_unshare_user = true;
409 #endif
410
411 if (opt_unshare_user_try &&
412 stat ("/proc/self/ns/user", &sbuf) == 0)
413 {
414- bool disabled = FALSE;
415+ bool disabled = false;
416
417 /* RHEL7 has a kernel module parameter that lets you enable user namespaces */
418 if (stat ("/sys/module/user_namespace/parameters/enable", &sbuf) == 0)
419@@ -2818,7 +2818,7 @@ main (int argc,
420 cleanup_free char *enable = NULL;
421 enable = load_file_at (AT_FDCWD, "/sys/module/user_namespace/parameters/enable");
422 if (enable != NULL && enable[0] == 'N')
423- disabled = TRUE;
424+ disabled = true;
425 }
426
427 /* Check for max_user_namespaces */
428@@ -2827,7 +2827,7 @@ main (int argc,
429 cleanup_free char *max_user_ns = NULL;
430 max_user_ns = load_file_at (AT_FDCWD, "/proc/sys/user/max_user_namespaces");
431 if (max_user_ns != NULL && strcmp(max_user_ns, "0\n") == 0)
432- disabled = TRUE;
433+ disabled = true;
434 }
435
436 /* Debian lets you disable *unprivileged* user namespaces. However this is not
437@@ -2835,7 +2835,7 @@ main (int argc,
438 already, and there is not much we can do, its just a non-working setup. */
439
440 if (!disabled)
441- opt_unshare_user = TRUE;
442+ opt_unshare_user = true;
443 }
444
445 if (argc <= 0)
446@@ -2993,7 +2993,7 @@ main (int argc,
447 */
448 write_uid_gid_map (ns_uid, real_uid,
449 ns_gid, real_gid,
450- pid, TRUE, opt_needs_devpts);
451+ pid, true, opt_needs_devpts);
452 }
453
454 /* Initial launched process, wait for pid 1 or exec:ed command to exit */
455@@ -3002,7 +3002,7 @@ main (int argc,
456 die_with_error ("Setting userns2 failed");
457
458 /* We don't need any privileges in the launcher, drop them immediately. */
459- drop_privs (FALSE, FALSE);
460+ drop_privs (false, false);
461
462 /* Optionally bind our lifecycle to that of the parent */
463 handle_die_with_parent ();
464@@ -3010,17 +3010,17 @@ main (int argc,
465 if (opt_info_fd != -1)
466 {
467 cleanup_free char *output = xasprintf ("{\n \"child-pid\": %i", pid);
468- dump_info (opt_info_fd, output, TRUE);
469- namespace_ids_write (opt_info_fd, FALSE);
470- dump_info (opt_info_fd, "\n}\n", TRUE);
471+ dump_info (opt_info_fd, output, true);
472+ namespace_ids_write (opt_info_fd, false);
473+ dump_info (opt_info_fd, "\n}\n", true);
474 close (opt_info_fd);
475 }
476 if (opt_json_status_fd != -1)
477 {
478 cleanup_free char *output = xasprintf ("{ \"child-pid\": %i", pid);
479- dump_info (opt_json_status_fd, output, TRUE);
480- namespace_ids_write (opt_json_status_fd, TRUE);
481- dump_info (opt_json_status_fd, " }\n", TRUE);
482+ dump_info (opt_json_status_fd, output, true);
483+ namespace_ids_write (opt_json_status_fd, true);
484+ dump_info (opt_json_status_fd, " }\n", true);
485 }
486
487 if (opt_userns_block_fd != -1)
488@@ -3116,7 +3116,7 @@ main (int argc,
489
490 write_uid_gid_map (ns_uid, real_uid,
491 ns_gid, real_gid,
492- -1, TRUE, FALSE);
493+ -1, true, false);
494 }
495
496 old_umask = umask (0);
497@@ -3177,7 +3177,7 @@ main (int argc,
498 if (child == 0)
499 {
500 /* Unprivileged setup process */
501- drop_privs (FALSE, TRUE);
502+ drop_privs (false, true);
503 close (privsep_sockets[0]);
504 setup_newroot (opt_unshare_pid, privsep_sockets[1]);
505 exit (0);
506@@ -3289,11 +3289,11 @@ main (int argc,
507 die_with_error ("unshare user ns");
508
509 /* We're in a new user namespace, we got back the bounding set, clear it again */
510- drop_cap_bounding_set (FALSE);
511+ drop_cap_bounding_set (false);
512
513 write_uid_gid_map (opt_sandbox_uid, ns_uid,
514 opt_sandbox_gid, ns_gid,
515- -1, FALSE, FALSE);
516+ -1, false, false);
517 }
518
519 if (opt_disable_userns || opt_assert_userns_disabled)
520@@ -3306,7 +3306,7 @@ main (int argc,
521 }
522
523 /* All privileged ops are done now, so drop caps we don't need */
524- drop_privs (!is_privileged, TRUE);
525+ drop_privs (!is_privileged, true);
526
527 if (opt_block_fd != -1)
528 {
529@@ -3370,7 +3370,7 @@ main (int argc,
530
531 if (pid != 0)
532 {
533- drop_all_caps (FALSE);
534+ drop_all_caps (false);
535
536 /* Close fds in pid 1, except stdio and optionally event_fd
537 (for syncing pid 2 lifetime with monitor_child) and
538diff --git a/utils.c b/utils.c
539index 43c8d79..7c562b1 100644
540--- a/utils.c
541+++ b/utils.c
542@@ -206,7 +206,7 @@ bool
543 has_path_prefix (const char *str,
544 const char *prefix)
545 {
546- while (TRUE)
547+ while (true)
548 {
549 /* Skip consecutive slashes to reach next path
550 element */
551@@ -217,13 +217,13 @@ has_path_prefix (const char *str,
552
553 /* No more prefix path elements? Done! */
554 if (*prefix == 0)
555- return TRUE;
556+ return true;
557
558 /* Compare path element */
559 while (*prefix != 0 && *prefix != '/')
560 {
561 if (*str != *prefix)
562- return FALSE;
563+ return false;
564 str++;
565 prefix++;
566 }
567@@ -231,7 +231,7 @@ has_path_prefix (const char *str,
568 /* Matched prefix path element,
569 must be entire str path element */
570 if (*str != '/' && *str != 0)
571- return FALSE;
572+ return false;
573 }
574 }
575
576@@ -239,7 +239,7 @@ bool
577 path_equal (const char *path1,
578 const char *path2)
579 {
580- while (TRUE)
581+ while (true)
582 {
583 /* Skip consecutive slashes to reach next path
584 element */
585@@ -256,14 +256,14 @@ path_equal (const char *path1,
586 while (*path1 != 0 && *path1 != '/')
587 {
588 if (*path1 != *path2)
589- return FALSE;
590+ return false;
591 path1++;
592 path2++;
593 }
594
595 /* Matched path1 path element, must be entire path element */
596 if (*path2 != '/' && *path2 != 0)
597- return FALSE;
598+ return false;
599 }
600 }
601
602@@ -526,7 +526,7 @@ copy_file_data (int sfd,
603 char buffer[BUFSIZE];
604 ssize_t bytes_read;
605
606- while (TRUE)
607+ while (true)
608 {
609 bytes_read = read (sfd, buffer, BUFSIZE);
610 if (bytes_read == -1)
611diff --git a/utils.h b/utils.h
612index 9f17297..2c37ccb 100644
613--- a/utils.h
614+++ b/utils.h
615@@ -24,6 +24,7 @@
616 #include <errno.h>
617 #include <fcntl.h>
618 #include <stdarg.h>
619+#include <stdbool.h>
620 #include <stdio.h>
621 #include <stdlib.h>
622 #include <string.h>
623@@ -41,10 +42,6 @@
624
625 #define N_ELEMENTS(arr) (sizeof (arr) / sizeof ((arr)[0]))
626
627-#define TRUE 1
628-#define FALSE 0
629-typedef int bool;
630-
631 #define PIPE_READ_END 0
632 #define PIPE_WRITE_END 1
633
diff --git a/meta-oe/recipes-security/bubblewrap/bubblewrap_0.10.0.bb b/meta-oe/recipes-security/bubblewrap/bubblewrap_0.10.0.bb
index 60155e035b..41ab0cfc32 100644
--- a/meta-oe/recipes-security/bubblewrap/bubblewrap_0.10.0.bb
+++ b/meta-oe/recipes-security/bubblewrap/bubblewrap_0.10.0.bb
@@ -5,7 +5,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
5 5
6DEPENDS = "libcap" 6DEPENDS = "libcap"
7 7
8SRC_URI = "https://github.com/containers/${BPN}/releases/download/v${PV}/${BP}.tar.xz" 8SRC_URI = " \
9 https://github.com/containers/${BPN}/releases/download/v${PV}/${BP}.tar.xz \
10 file://0001-Use-stdbool.h-for-booleans.patch \
11"
9SRC_URI[sha256sum] = "65d92cf44a63a51e1b7771f70c05013dce5bd6b0b2841c4b4be54b0c45565471" 12SRC_URI[sha256sum] = "65d92cf44a63a51e1b7771f70c05013dce5bd6b0b2841c4b4be54b0c45565471"
10 13
11inherit autotools bash-completion github-releases manpages pkgconfig 14inherit autotools bash-completion github-releases manpages pkgconfig