diff options
22 files changed, 325 insertions, 446 deletions
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0002-Instead-of-doing-preprocessor-magic-just-output-off_.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0002-Instead-of-doing-preprocessor-magic-just-output-off_.patch deleted file mode 100644 index 5c6e097493..0000000000 --- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0002-Instead-of-doing-preprocessor-magic-just-output-off_.patch +++ /dev/null | |||
| @@ -1,326 +0,0 @@ | |||
| 1 | From 01c98d5d5d044d9a125abcdbb2f3d771966365b0 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: mirabilos <m@mirbsd.org> | ||
| 3 | Date: Thu, 1 Feb 2018 15:34:07 +0100 | ||
| 4 | Subject: [PATCH] Instead of doing preprocessor magic, just output off_t as | ||
| 5 | long long | ||
| 6 | |||
| 7 | Fix warnings abot PRIdoff_t in libmtd.c, in mtd_read (and mtd_write): | ||
| 8 | |||
| 9 | In file included from ../git/lib/libmtd.c:40:0: | ||
| 10 | ../git/lib/libmtd.c: In function 'mtd_read': | ||
| 11 | ../git/include/common.h:110:18: warning: format '%ld' expects argument of | ||
| 12 | type 'long int', but argument 5 has type 'off_t {aka long long int}' | ||
| 13 | [-Wformat=] | ||
| 14 | |||
| 15 | ../git/include/common.h:120:2: note: in expansion of macro 'errmsg' | ||
| 16 | errmsg(fmt, ##__VA_ARGS__); \ | ||
| 17 | ^~~~~~ | ||
| 18 | ../git/lib/libmtd.c:1082:10: note: in expansion of macro 'sys_errmsg' | ||
| 19 | return sys_errmsg("cannot seek mtd%d to offset %"PRIdoff_t, | ||
| 20 | ^~~~~~~~~~ | ||
| 21 | |||
| 22 | /usr/lib/klibc/include/inttypes.h:28:17: note: format string is defined here | ||
| 23 | #define PRId32 "d" | ||
| 24 | |||
| 25 | Upstream-Status: Submitted | ||
| 26 | |||
| 27 | Signed-off-by: Thorsten Glaser <tg@mirbsd.org> | ||
| 28 | --- | ||
| 29 | include/common.h | 18 ------------------ | ||
| 30 | jffsX-utils/mkfs.jffs2.c | 20 ++++++++++---------- | ||
| 31 | lib/libmtd.c | 8 ++++---- | ||
| 32 | misc-utils/flash_erase.c | 6 +++--- | ||
| 33 | misc-utils/flash_otp_write.c | 2 +- | ||
| 34 | misc-utils/ftl_check.c | 2 +- | ||
| 35 | misc-utils/mtd_debug.c | 4 ++-- | ||
| 36 | misc-utils/serve_image.c | 4 ++-- | ||
| 37 | tests/fs-tests/integrity/integck.c | 4 ++-- | ||
| 38 | tests/mtd-tests/nandpagetest.c | 4 ++-- | ||
| 39 | tests/ubi-tests/integ.c | 6 +++--- | ||
| 40 | ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | 6 +++--- | ||
| 41 | 12 files changed, 33 insertions(+), 51 deletions(-) | ||
| 42 | |||
| 43 | diff --git a/include/common.h b/include/common.h | ||
| 44 | index f8f72ea..642c212 100644 | ||
| 45 | --- a/include/common.h | ||
| 46 | +++ b/include/common.h | ||
| 47 | @@ -70,24 +70,6 @@ extern "C" { | ||
| 48 | #define O_CLOEXEC 0 | ||
| 49 | #endif | ||
| 50 | |||
| 51 | -/* define a print format specifier for off_t */ | ||
| 52 | -#if (SIZEOF_OFF_T >= 8) | ||
| 53 | -#define PRIxoff_t PRIx64 | ||
| 54 | -#define PRIdoff_t PRId64 | ||
| 55 | -#else | ||
| 56 | -#define PRIxoff_t "l"PRIx32 | ||
| 57 | -#define PRIdoff_t "l"PRId32 | ||
| 58 | -#endif | ||
| 59 | - | ||
| 60 | -/* define a print format specifier for loff_t */ | ||
| 61 | -#if (SIZEOF_LOFF_T >= 8) | ||
| 62 | -#define PRIxloff_t PRIx64 | ||
| 63 | -#define PRIdloff_t PRId64 | ||
| 64 | -#else | ||
| 65 | -#define PRIxloff_t "l"PRIx32 | ||
| 66 | -#define PRIdloff_t "l"PRId32 | ||
| 67 | -#endif | ||
| 68 | - | ||
| 69 | /* Verbose messages */ | ||
| 70 | #define bareverbose(verbose, fmt, ...) do { \ | ||
| 71 | if (verbose) \ | ||
| 72 | diff --git a/jffsX-utils/mkfs.jffs2.c b/jffsX-utils/mkfs.jffs2.c | ||
| 73 | index 9aa6c39..0661786 100644 | ||
| 74 | --- a/jffsX-utils/mkfs.jffs2.c | ||
| 75 | +++ b/jffsX-utils/mkfs.jffs2.c | ||
| 76 | @@ -1237,8 +1237,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir) | ||
| 77 | } else switch (e->sb.st_mode & S_IFMT) { | ||
| 78 | case S_IFDIR: | ||
| 79 | if (verbose) { | ||
| 80 | - printf("\td %04o %9" PRIdoff_t " %5d:%-3d %s\n", | ||
| 81 | - e->sb.st_mode & ~S_IFMT, e->sb.st_size, | ||
| 82 | + printf("\td %04o %9lld %5d:%-3d %s\n", | ||
| 83 | + e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size, | ||
| 84 | (int) (e->sb.st_uid), (int) (e->sb.st_gid), | ||
| 85 | e->name); | ||
| 86 | } | ||
| 87 | @@ -1247,8 +1247,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir) | ||
| 88 | break; | ||
| 89 | case S_IFSOCK: | ||
| 90 | if (verbose) { | ||
| 91 | - printf("\ts %04o %9" PRIdoff_t " %5d:%-3d %s\n", | ||
| 92 | - e->sb.st_mode & ~S_IFMT, e->sb.st_size, | ||
| 93 | + printf("\ts %04o %9lld %5d:%-3d %s\n", | ||
| 94 | + e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size, | ||
| 95 | (int) e->sb.st_uid, (int) e->sb.st_gid, e->name); | ||
| 96 | } | ||
| 97 | write_pipe(e); | ||
| 98 | @@ -1256,8 +1256,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir) | ||
| 99 | break; | ||
| 100 | case S_IFIFO: | ||
| 101 | if (verbose) { | ||
| 102 | - printf("\tp %04o %9" PRIdoff_t " %5d:%-3d %s\n", | ||
| 103 | - e->sb.st_mode & ~S_IFMT, e->sb.st_size, | ||
| 104 | + printf("\tp %04o %9lld %5d:%-3d %s\n", | ||
| 105 | + e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size, | ||
| 106 | (int) e->sb.st_uid, (int) e->sb.st_gid, e->name); | ||
| 107 | } | ||
| 108 | write_pipe(e); | ||
| 109 | @@ -1285,8 +1285,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir) | ||
| 110 | break; | ||
| 111 | case S_IFLNK: | ||
| 112 | if (verbose) { | ||
| 113 | - printf("\tl %04o %9" PRIdoff_t " %5d:%-3d %s -> %s\n", | ||
| 114 | - e->sb.st_mode & ~S_IFMT, e->sb.st_size, | ||
| 115 | + printf("\tl %04o %9lld %5d:%-3d %s -> %s\n", | ||
| 116 | + e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size, | ||
| 117 | (int) e->sb.st_uid, (int) e->sb.st_gid, e->name, | ||
| 118 | e->link); | ||
| 119 | } | ||
| 120 | @@ -1297,8 +1297,8 @@ static void recursive_populate_directory(struct filesystem_entry *dir) | ||
| 121 | wrote = write_regular_file(e); | ||
| 122 | write_xattr_entry(e); | ||
| 123 | if (verbose) { | ||
| 124 | - printf("\tf %04o %9" PRIdoff_t " (%9u) %5d:%-3d %s\n", | ||
| 125 | - e->sb.st_mode & ~S_IFMT, e->sb.st_size, wrote, | ||
| 126 | + printf("\tf %04o %9lld (%9u) %5d:%-3d %s\n", | ||
| 127 | + e->sb.st_mode & ~S_IFMT, (long long)e->sb.st_size, wrote, | ||
| 128 | (int) e->sb.st_uid, (int) e->sb.st_gid, e->name); | ||
| 129 | } | ||
| 130 | break; | ||
| 131 | diff --git a/lib/libmtd.c b/lib/libmtd.c | ||
| 132 | index 86c89ae..f375381 100644 | ||
| 133 | --- a/lib/libmtd.c | ||
| 134 | +++ b/lib/libmtd.c | ||
| 135 | @@ -1079,8 +1079,8 @@ int mtd_read(const struct mtd_dev_info *mtd, int fd, int eb, int offs, | ||
| 136 | /* Seek to the beginning of the eraseblock */ | ||
| 137 | seek = (off_t)eb * mtd->eb_size + offs; | ||
| 138 | if (lseek(fd, seek, SEEK_SET) != seek) | ||
| 139 | - return sys_errmsg("cannot seek mtd%d to offset %"PRIdoff_t, | ||
| 140 | - mtd->mtd_num, seek); | ||
| 141 | + return sys_errmsg("cannot seek mtd%d to offset %lld", | ||
| 142 | + mtd->mtd_num, (long long)seek); | ||
| 143 | |||
| 144 | while (rd < len) { | ||
| 145 | ret = read(fd, buf + rd, len - rd); | ||
| 146 | @@ -1188,8 +1188,8 @@ int mtd_write(libmtd_t desc, const struct mtd_dev_info *mtd, int fd, int eb, | ||
| 147 | if (data) { | ||
| 148 | /* Seek to the beginning of the eraseblock */ | ||
| 149 | if (lseek(fd, seek, SEEK_SET) != seek) | ||
| 150 | - return sys_errmsg("cannot seek mtd%d to offset %"PRIdoff_t, | ||
| 151 | - mtd->mtd_num, seek); | ||
| 152 | + return sys_errmsg("cannot seek mtd%d to offset %lld", | ||
| 153 | + mtd->mtd_num, (long long)seek); | ||
| 154 | ret = write(fd, data, len); | ||
| 155 | if (ret != len) | ||
| 156 | return sys_errmsg("cannot write %d bytes to mtd%d " | ||
| 157 | diff --git a/misc-utils/flash_erase.c b/misc-utils/flash_erase.c | ||
| 158 | index 0c9449f..ec4b2e1 100644 | ||
| 159 | --- a/misc-utils/flash_erase.c | ||
| 160 | +++ b/misc-utils/flash_erase.c | ||
| 161 | @@ -53,8 +53,8 @@ int target_endian = __BYTE_ORDER; | ||
| 162 | static void show_progress(struct mtd_dev_info *mtd, off_t start, int eb, | ||
| 163 | int eb_start, int eb_cnt) | ||
| 164 | { | ||
| 165 | - bareverbose(!quiet, "\rErasing %d Kibyte @ %"PRIxoff_t" -- %2i %% complete ", | ||
| 166 | - mtd->eb_size / 1024, start, ((eb - eb_start) * 100) / eb_cnt); | ||
| 167 | + bareverbose(!quiet, "\rErasing %d Kibyte @ %llx -- %2i %% complete ", | ||
| 168 | + mtd->eb_size / 1024, (unsigned long long)start, ((eb - eb_start) * 100) / eb_cnt); | ||
| 169 | fflush(stdout); | ||
| 170 | } | ||
| 171 | |||
| 172 | @@ -210,7 +210,7 @@ int main(int argc, char *argv[]) | ||
| 173 | if (!noskipbad) { | ||
| 174 | int ret = mtd_is_bad(&mtd, fd, eb); | ||
| 175 | if (ret > 0) { | ||
| 176 | - verbose(!quiet, "Skipping bad block at %08"PRIxoff_t, offset); | ||
| 177 | + verbose(!quiet, "Skipping bad block at %08llx", (unsigned long long)offset); | ||
| 178 | continue; | ||
| 179 | } else if (ret < 0) { | ||
| 180 | if (errno == EOPNOTSUPP) { | ||
| 181 | diff --git a/misc-utils/flash_otp_write.c b/misc-utils/flash_otp_write.c | ||
| 182 | index b02d0b0..04c96c6 100644 | ||
| 183 | --- a/misc-utils/flash_otp_write.c | ||
| 184 | +++ b/misc-utils/flash_otp_write.c | ||
| 185 | @@ -76,7 +76,7 @@ int main(int argc,char *argv[]) | ||
| 186 | return errno; | ||
| 187 | } | ||
| 188 | |||
| 189 | - printf("Writing OTP user data on %s at offset 0x%"PRIxoff_t"\n", argv[2], offset); | ||
| 190 | + printf("Writing OTP user data on %s at offset 0x%llx\n", argv[2], (unsigned long long)offset); | ||
| 191 | |||
| 192 | if (mtd_type_is_nand_user(&mtdInfo)) | ||
| 193 | len = mtdInfo.writesize; | ||
| 194 | diff --git a/misc-utils/ftl_check.c b/misc-utils/ftl_check.c | ||
| 195 | index a853cf4..e854922 100644 | ||
| 196 | --- a/misc-utils/ftl_check.c | ||
| 197 | +++ b/misc-utils/ftl_check.c | ||
| 198 | @@ -131,7 +131,7 @@ static void check_partition(int fd) | ||
| 199 | perror("read failed"); | ||
| 200 | break; | ||
| 201 | } | ||
| 202 | - printf("\nErase unit %"PRIdoff_t":\n", i); | ||
| 203 | + printf("\nErase unit %lld:\n", (long long)i); | ||
| 204 | if ((hdr2.FormattedSize != hdr.FormattedSize) || | ||
| 205 | (hdr2.NumEraseUnits != hdr.NumEraseUnits) || | ||
| 206 | (hdr2.SerialNumber != hdr.SerialNumber)) | ||
| 207 | diff --git a/misc-utils/mtd_debug.c b/misc-utils/mtd_debug.c | ||
| 208 | index ac37e23..d65ad36 100644 | ||
| 209 | --- a/misc-utils/mtd_debug.c | ||
| 210 | +++ b/misc-utils/mtd_debug.c | ||
| 211 | @@ -160,7 +160,7 @@ retry: | ||
| 212 | if (buf != NULL) | ||
| 213 | free(buf); | ||
| 214 | close(outfd); | ||
| 215 | - printf("Copied %zu bytes from address 0x%.8"PRIxoff_t" in flash to %s\n", len, offset, filename); | ||
| 216 | + printf("Copied %zu bytes from address 0x%.8llx in flash to %s\n", len, (unsigned long long)offset, filename); | ||
| 217 | return 0; | ||
| 218 | |||
| 219 | err2: | ||
| 220 | @@ -225,7 +225,7 @@ retry: | ||
| 221 | if (buf != NULL) | ||
| 222 | free(buf); | ||
| 223 | fclose(fp); | ||
| 224 | - printf("Copied %d bytes from %s to address 0x%.8"PRIxoff_t" in flash\n", len, filename, offset); | ||
| 225 | + printf("Copied %d bytes from %s to address 0x%.8llx in flash\n", len, filename, (unsigned long long)offset); | ||
| 226 | return 0; | ||
| 227 | } | ||
| 228 | |||
| 229 | diff --git a/misc-utils/serve_image.c b/misc-utils/serve_image.c | ||
| 230 | index f2475d6..6c8c8fb 100644 | ||
| 231 | --- a/misc-utils/serve_image.c | ||
| 232 | +++ b/misc-utils/serve_image.c | ||
| 233 | @@ -129,8 +129,8 @@ int main(int argc, char **argv) | ||
| 234 | } | ||
| 235 | |||
| 236 | if (st.st_size % erasesize) { | ||
| 237 | - fprintf(stderr, "Image size %" PRIdoff_t " bytes is not a multiple of erasesize %d bytes\n", | ||
| 238 | - st.st_size, erasesize); | ||
| 239 | + fprintf(stderr, "Image size %lld bytes is not a multiple of erasesize %d bytes\n", | ||
| 240 | + (long long)st.st_size, erasesize); | ||
| 241 | exit(1); | ||
| 242 | } | ||
| 243 | image = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, rfd, 0); | ||
| 244 | diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c | ||
| 245 | index 84753d6..0a7f142 100644 | ||
| 246 | --- a/tests/fs-tests/integrity/integck.c | ||
| 247 | +++ b/tests/fs-tests/integrity/integck.c | ||
| 248 | @@ -897,8 +897,8 @@ static ssize_t file_write_data(struct file_info *file, int fd, off_t offset, | ||
| 249 | remains = size; | ||
| 250 | actual = 0; | ||
| 251 | written = IO_BUFFER_SIZE; | ||
| 252 | - v("write %zd bytes, offset %"PRIdoff_t", file %s", | ||
| 253 | - size, offset, get_file_name(file)); | ||
| 254 | + v("write %zd bytes, offset %lld, file %s", | ||
| 255 | + size, (long long)offset, get_file_name(file)); | ||
| 256 | while (remains) { | ||
| 257 | /* Fill up buffer with random data */ | ||
| 258 | if (written < IO_BUFFER_SIZE) { | ||
| 259 | diff --git a/tests/mtd-tests/nandpagetest.c b/tests/mtd-tests/nandpagetest.c | ||
| 260 | index c6812df..465e548 100644 | ||
| 261 | --- a/tests/mtd-tests/nandpagetest.c | ||
| 262 | +++ b/tests/mtd-tests/nandpagetest.c | ||
| 263 | @@ -232,8 +232,8 @@ static int verify_eraseblock(int ebnum) | ||
| 264 | return err; | ||
| 265 | |||
| 266 | if (lseek(fd, addr, SEEK_SET) != addr) { | ||
| 267 | - fprintf(stderr, "cannot seek mtd%d to offset %"PRIdloff_t, | ||
| 268 | - mtd.mtd_num, addr); | ||
| 269 | + fprintf(stderr, "cannot seek mtd%d to offset %lld", | ||
| 270 | + mtd.mtd_num, (long long)addr); | ||
| 271 | return -1; | ||
| 272 | } | ||
| 273 | |||
| 274 | diff --git a/tests/ubi-tests/integ.c b/tests/ubi-tests/integ.c | ||
| 275 | index 26c2ce5..1cd0649 100644 | ||
| 276 | --- a/tests/ubi-tests/integ.c | ||
| 277 | +++ b/tests/ubi-tests/integ.c | ||
| 278 | @@ -243,7 +243,7 @@ static void check_erase_block(struct erase_block_info *erase_block, int fd) | ||
| 279 | while (size) | ||
| 280 | if (read_buffer[--size] != 0xff) { | ||
| 281 | fprintf(stderr, "block no. = %d\n" , erase_block->block_number); | ||
| 282 | - fprintf(stderr, "offset = %"PRIdoff_t"\n" , gap_start); | ||
| 283 | + fprintf(stderr, "offset = %lld\n" , (long long)gap_start); | ||
| 284 | fprintf(stderr, "size = %ld\n" , (long) bytes_read); | ||
| 285 | error_exit("verify 0xff failed"); | ||
| 286 | } | ||
| 287 | @@ -254,7 +254,7 @@ static void check_erase_block(struct erase_block_info *erase_block, int fd) | ||
| 288 | errno = 0; | ||
| 289 | bytes_read = read(fd, read_buffer, w->size); | ||
| 290 | if (bytes_read != w->size) { | ||
| 291 | - fprintf(stderr, "offset = %"PRIdoff_t"\n" , w->offset); | ||
| 292 | + fprintf(stderr, "offset = %lld\n" , (long long)w->offset); | ||
| 293 | fprintf(stderr, "size = %ld\n" , (long) w->size); | ||
| 294 | fprintf(stderr, "bytes_read = %ld\n" , (long) bytes_read); | ||
| 295 | error_exit("read failed"); | ||
| 296 | @@ -279,7 +279,7 @@ static void check_erase_block(struct erase_block_info *erase_block, int fd) | ||
| 297 | while (size) | ||
| 298 | if (read_buffer[--size] != 0xff) { | ||
| 299 | fprintf(stderr, "block no. = %d\n" , erase_block->block_number); | ||
| 300 | - fprintf(stderr, "offset = %"PRIdoff_t"\n" , gap_start); | ||
| 301 | + fprintf(stderr, "offset = %lld\n" , (long long)gap_start); | ||
| 302 | fprintf(stderr, "size = %ld\n" , (long) bytes_read); | ||
| 303 | error_exit("verify 0xff failed!"); | ||
| 304 | } | ||
| 305 | diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | ||
| 306 | index c916f48..f0237ab 100644 | ||
| 307 | --- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | ||
| 308 | +++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | ||
| 309 | @@ -772,11 +772,11 @@ int write_leb(int lnum, int len, void *buf) | ||
| 310 | return sys_err_msg("ubi_leb_change_start failed"); | ||
| 311 | |||
| 312 | if (lseek(out_fd, pos, SEEK_SET) != pos) | ||
| 313 | - return sys_err_msg("lseek failed seeking %"PRIdoff_t, pos); | ||
| 314 | + return sys_err_msg("lseek failed seeking %lld", (long long)pos); | ||
| 315 | |||
| 316 | if (write(out_fd, buf, c->leb_size) != c->leb_size) | ||
| 317 | - return sys_err_msg("write failed writing %d bytes at pos %"PRIdoff_t, | ||
| 318 | - c->leb_size, pos); | ||
| 319 | + return sys_err_msg("write failed writing %d bytes at pos %lld", | ||
| 320 | + c->leb_size, (long long)pos); | ||
| 321 | |||
| 322 | return 0; | ||
| 323 | } | ||
| 324 | -- | ||
| 325 | 2.7.4 | ||
| 326 | |||
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0005-common.h-replace-getline-with-fgets.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0005-common.h-replace-getline-with-fgets.patch deleted file mode 100644 index a556ed3d87..0000000000 --- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0005-common.h-replace-getline-with-fgets.patch +++ /dev/null | |||
| @@ -1,56 +0,0 @@ | |||
| 1 | From 2137eb1a6cd0326510bd3b9faf8037d9bf34ca3d Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Andrea Adami <andrea.adami@gmail.com> | ||
| 3 | Date: Wed, 23 May 2018 15:52:34 +0200 | ||
| 4 | Subject: [PATCH] common.h: replace getline() with fgets | ||
| 5 | |||
| 6 | There is an unofficial upstream patch adding a simple getline() | ||
| 7 | to libmissing.h. Unfortunately the patch creates issues if the | ||
| 8 | toolchain is using glibc (autotools cache?) so for the moment | ||
| 9 | keep the old hack and wait for commits upstream. | ||
| 10 | |||
| 11 | Fix: | ||
| 12 | |||
| 13 | | ubi-utils/ubiformat.o: In function `prompt.constprop.4': | ||
| 14 | | ubiformat.c:(.text+0x70): undefined reference to `getline' | ||
| 15 | |||
| 16 | Upstream-Status: Inappropriate [klibc specific] | ||
| 17 | |||
| 18 | Signed-off-by: Andrea Adami <andrea.adami@gmail.com> | ||
| 19 | --- | ||
| 20 | include/common.h | 11 +++++++++++ | ||
| 21 | 1 file changed, 11 insertions(+) | ||
| 22 | |||
| 23 | diff --git a/include/common.h b/include/common.h | ||
| 24 | index a1d59d0..96b0bdb 100644 | ||
| 25 | --- a/include/common.h | ||
| 26 | +++ b/include/common.h | ||
| 27 | @@ -126,15 +126,26 @@ extern "C" { | ||
| 28 | */ | ||
| 29 | static inline bool prompt(const char *msg, bool def) | ||
| 30 | { | ||
| 31 | + | ||
| 32 | +#ifndef __KLIBC__ | ||
| 33 | char *line = NULL; | ||
| 34 | size_t len; | ||
| 35 | +#else | ||
| 36 | + char *line; | ||
| 37 | + const int sizeof_line = 2; | ||
| 38 | + line = malloc(sizeof_line); | ||
| 39 | +#endif | ||
| 40 | bool ret = def; | ||
| 41 | |||
| 42 | do { | ||
| 43 | normsg_cont("%s (%c/%c) ", msg, def ? 'Y' : 'y', def ? 'n' : 'N'); | ||
| 44 | fflush(stdout); | ||
| 45 | |||
| 46 | +#ifndef __KLIBC__ | ||
| 47 | while (getline(&line, &len, stdin) == -1) { | ||
| 48 | +#else | ||
| 49 | + while (fgets(line, sizeof_line, stdin) == NULL) { | ||
| 50 | +#endif | ||
| 51 | printf("failed to read prompt; assuming '%s'\n", | ||
| 52 | def ? "yes" : "no"); | ||
| 53 | break; | ||
| 54 | -- | ||
| 55 | 2.7.4 | ||
| 56 | |||
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.3.0/0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch index 4ee9bd9a18..26a07688e9 100644 --- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch +++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.3.0/0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch | |||
| @@ -23,9 +23,9 @@ diff --git a/include/libmissing.h b/include/libmissing.h | |||
| 23 | index 0196033..832c372 100644 | 23 | index 0196033..832c372 100644 |
| 24 | --- a/include/libmissing.h | 24 | --- a/include/libmissing.h |
| 25 | +++ b/include/libmissing.h | 25 | +++ b/include/libmissing.h |
| 26 | @@ -3,9 +3,11 @@ | 26 | @@ -1,9 +1,11 @@ |
| 27 | 27 | #ifndef LIBMISSING_H | |
| 28 | #include "config.h" | 28 | #define LIBMISSING_H |
| 29 | 29 | ||
| 30 | +#ifndef __KLIBC__ | 30 | +#ifndef __KLIBC__ |
| 31 | #ifdef HAVE_EXECINFO_H | 31 | #ifdef HAVE_EXECINFO_H |
| @@ -35,6 +35,3 @@ index 0196033..832c372 100644 | |||
| 35 | 35 | ||
| 36 | #ifndef HAVE_EXECINFO_H | 36 | #ifndef HAVE_EXECINFO_H |
| 37 | int backtrace(void **buffer, int size); | 37 | int backtrace(void **buffer, int size); |
| 38 | -- | ||
| 39 | 2.7.4 | ||
| 40 | |||
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-make-Add-compiler-includes-in-cflags.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.3.0/0001-make-Add-compiler-includes-in-cflags.patch index 778d830128..d58cdfd5c4 100644 --- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0001-make-Add-compiler-includes-in-cflags.patch +++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.3.0/0001-make-Add-compiler-includes-in-cflags.patch | |||
| @@ -19,14 +19,11 @@ diff --git a/Makefile.am b/Makefile.am | |||
| 19 | index 5a6e77c..f0003d5 100644 | 19 | index 5a6e77c..f0003d5 100644 |
| 20 | --- a/Makefile.am | 20 | --- a/Makefile.am |
| 21 | +++ b/Makefile.am | 21 | +++ b/Makefile.am |
| 22 | @@ -9,6 +9,7 @@ endif | 22 | @@ -26,6 +26,7 @@ endif |
| 23 | if WITHOUT_LZO | 23 | if WITH_CRYPTO |
| 24 | AM_CPPFLAGS += -DWITHOUT_LZO | 24 | AM_CPPFLAGS += -DWITH_CRYPTO |
| 25 | endif | 25 | endif |
| 26 | +AM_CPPFLAGS += -I$(shell $(CC) -print-file-name=include) | 26 | +AM_CPPFLAGS += -I$(shell $(CC) -print-file-name=include) |
| 27 | 27 | ||
| 28 | sbin_PROGRAMS = | 28 | sbin_PROGRAMS = |
| 29 | sbin_SCRIPTS = | 29 | sbin_SCRIPTS = |
| 30 | -- | ||
| 31 | 2.30.0 | ||
| 32 | |||
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0003-Makefile.am-only-build-ubi-utils.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.3.0/0003-Makefile.am-only-build-ubi-utils.patch index 38ab7a91cb..de36c3c8d9 100644 --- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0003-Makefile.am-only-build-ubi-utils.patch +++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.3.0/0003-Makefile.am-only-build-ubi-utils.patch | |||
| @@ -16,7 +16,7 @@ diff --git a/Makefile.am b/Makefile.am | |||
| 16 | index 5a6e77c..98715dd 100644 | 16 | index 5a6e77c..98715dd 100644 |
| 17 | --- a/Makefile.am | 17 | --- a/Makefile.am |
| 18 | +++ b/Makefile.am | 18 | +++ b/Makefile.am |
| 19 | @@ -34,9 +34,9 @@ EXTRA_DIST += $(GLOBAL_HEADER) $(GLOBAL_EXTRA) | 19 | @@ -46,9 +46,9 @@ EXTRA_DIST = COPYING CHANGELOG.md README.txt |
| 20 | 20 | ||
| 21 | include lib/Makemodule.am | 21 | include lib/Makemodule.am |
| 22 | include ubi-utils/Makemodule.am | 22 | include ubi-utils/Makemodule.am |
| @@ -29,6 +29,3 @@ index 5a6e77c..98715dd 100644 | |||
| 29 | 29 | ||
| 30 | if BUILD_UBIFS | 30 | if BUILD_UBIFS |
| 31 | include ubifs-utils/Makemodule.am | 31 | include ubifs-utils/Makemodule.am |
| 32 | -- | ||
| 33 | 2.7.4 | ||
| 34 | |||
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.3.0/0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch index 2844a5020c..2844a5020c 100644 --- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.0.2/0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch +++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-2.3.0/0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch | |||
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.0.2.bb b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.3.0.bb index 461d75e625..3fcda333c9 100644 --- a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.0.2.bb +++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.3.0.bb | |||
| @@ -9,18 +9,16 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \ | |||
| 9 | 9 | ||
| 10 | inherit autotools pkgconfig klibc | 10 | inherit autotools pkgconfig klibc |
| 11 | 11 | ||
| 12 | SRCREV = "64f61a9dc71b158c7084006cbce4ea23886f0b47" | 12 | SRCREV = "4594fc1f4496a0ed55cabd31fbeba4e3fbf05602" |
| 13 | SRC_URI = "git://git.infradead.org/mtd-utils.git;branch=master \ | 13 | SRC_URI = "git://git.infraroot.at/mtd-utils.git;protocol=https;branch=master \ |
| 14 | file://0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch \ | 14 | file://0001-libmissing.h-fix-klibc-build-when-using-glibc-toolch.patch \ |
| 15 | file://0002-Instead-of-doing-preprocessor-magic-just-output-off_.patch \ | ||
| 16 | file://0003-Makefile.am-only-build-ubi-utils.patch \ | 15 | file://0003-Makefile.am-only-build-ubi-utils.patch \ |
| 17 | file://0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch \ | 16 | file://0004-mtd-utils-common.h-no-features.h-for-klibc-builds.patch \ |
| 18 | file://0005-common.h-replace-getline-with-fgets.patch \ | ||
| 19 | file://0001-make-Add-compiler-includes-in-cflags.patch \ | 17 | file://0001-make-Add-compiler-includes-in-cflags.patch \ |
| 20 | " | 18 | " |
| 21 | 19 | ||
| 22 | 20 | # ubihealthd fails to build since 2.3.0 | |
| 23 | EXTRA_OECONF += "--disable-tests --without-jffs --without-ubifs" | 21 | EXTRA_OECONF += "--without-tests --without-jffs --without-ubifs --disable-ubihealthd" |
| 24 | 22 | ||
| 25 | PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'xattr', d)}" | 23 | PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'xattr', d)}" |
| 26 | PACKAGECONFIG[xattr] = ",,acl," | 24 | PACKAGECONFIG[xattr] = ",,acl," |
| @@ -36,7 +34,7 @@ PACKAGES = "ubi-utils-klibc-dbg ubi-utils-klibc-doc" | |||
| 36 | 34 | ||
| 37 | PACKAGES =+ "mtdinfo-klibc ubiattach-klibc ubiblock-klibc ubicrc32-klibc ubidetach-klibc \ | 35 | PACKAGES =+ "mtdinfo-klibc ubiattach-klibc ubiblock-klibc ubicrc32-klibc ubidetach-klibc \ |
| 38 | ubiformat-klibc ubimkvol-klibc ubinfo-klibc ubinize-klibc ubirename-klibc \ | 36 | ubiformat-klibc ubimkvol-klibc ubinfo-klibc ubinize-klibc ubirename-klibc \ |
| 39 | ubirmvol-klibc ubirsvol-klibc ubiupdatevol-klibc" | 37 | ubirmvol-klibc ubirsvol-klibc ubiscan-klibc ubiupdatevol-klibc" |
| 40 | 38 | ||
| 41 | FILES:mtdinfo-klibc = "${sbindir}/mtdinfo" | 39 | FILES:mtdinfo-klibc = "${sbindir}/mtdinfo" |
| 42 | FILES:ubiattach-klibc = "${sbindir}/ubiattach" | 40 | FILES:ubiattach-klibc = "${sbindir}/ubiattach" |
| @@ -50,4 +48,5 @@ FILES:ubinize-klibc = "${sbindir}/ubinize" | |||
| 50 | FILES:ubirename-klibc = "${sbindir}/ubirename" | 48 | FILES:ubirename-klibc = "${sbindir}/ubirename" |
| 51 | FILES:ubirmvol-klibc = "${sbindir}/ubirmvol" | 49 | FILES:ubirmvol-klibc = "${sbindir}/ubirmvol" |
| 52 | FILES:ubirsvol-klibc = "${sbindir}/ubirsvol" | 50 | FILES:ubirsvol-klibc = "${sbindir}/ubirsvol" |
| 51 | FILES:ubiscan-klibc = "${sbindir}/ubiscan" | ||
| 53 | FILES:ubiupdatevol-klibc = "${sbindir}/ubiupdatevol" | 52 | FILES:ubiupdatevol-klibc = "${sbindir}/ubiupdatevol" |
diff --git a/meta-networking/recipes-connectivity/mbedtls/mbedtls_3.6.4.bb b/meta-networking/recipes-connectivity/mbedtls/mbedtls_3.6.5.bb index 07ac602d12..e6dfe43092 100644 --- a/meta-networking/recipes-connectivity/mbedtls/mbedtls_3.6.4.bb +++ b/meta-networking/recipes-connectivity/mbedtls/mbedtls_3.6.5.bb | |||
| @@ -26,7 +26,7 @@ SRC_URI = "gitsm://github.com/Mbed-TLS/mbedtls.git;protocol=https;branch=mbedtls | |||
| 26 | file://run-ptest \ | 26 | file://run-ptest \ |
| 27 | " | 27 | " |
| 28 | 28 | ||
| 29 | SRCREV = "c765c831e5c2a0971410692f92f7a81d6ec65ec2" | 29 | SRCREV = "e185d7fd85499c8ce5ca2a54f5cf8fe7dbe3f8df" |
| 30 | 30 | ||
| 31 | UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)" | 31 | UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)" |
| 32 | 32 | ||
diff --git a/meta-networking/recipes-support/strongswan/strongswan_6.0.2.bb b/meta-networking/recipes-support/strongswan/strongswan_6.0.3.bb index aa4524ab3e..438b5d5331 100644 --- a/meta-networking/recipes-support/strongswan/strongswan_6.0.2.bb +++ b/meta-networking/recipes-support/strongswan/strongswan_6.0.3.bb | |||
| @@ -10,7 +10,7 @@ DEPENDS:append = "${@bb.utils.contains('DISTRO_FEATURES', 'tpm2', ' tpm2-tss', | |||
| 10 | 10 | ||
| 11 | SRC_URI = "https://download.strongswan.org/strongswan-${PV}.tar.bz2" | 11 | SRC_URI = "https://download.strongswan.org/strongswan-${PV}.tar.bz2" |
| 12 | 12 | ||
| 13 | SRC_URI[sha256sum] = "b8bfc897b84001fd810a281918d6c9ce37503cae0f41b39c43d4aba0201277cf" | 13 | SRC_URI[sha256sum] = "288f2111f5c9f6ec85fc08fa835bf39232f5c4044969bb4de7b4335163b1efa9" |
| 14 | 14 | ||
| 15 | UPSTREAM_CHECK_REGEX = "strongswan-(?P<pver>\d+(\.\d+)+)\.tar" | 15 | UPSTREAM_CHECK_REGEX = "strongswan-(?P<pver>\d+(\.\d+)+)\.tar" |
| 16 | 16 | ||
diff --git a/meta-networking/recipes-support/wireshark/files/CVE-2025-9817.patch b/meta-networking/recipes-support/wireshark/files/CVE-2025-9817.patch new file mode 100644 index 0000000000..034c51778e --- /dev/null +++ b/meta-networking/recipes-support/wireshark/files/CVE-2025-9817.patch | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | From 39daba5e247ea495f88b0be82f0b7ebbdbf50fba Mon Sep 17 00:00:00 2001 | ||
| 2 | From: John Thacker <johnthacker@gmail.com> | ||
| 3 | Date: Sat, 26 Jul 2025 07:10:28 -0400 | ||
| 4 | Subject: [PATCH] ssh: Add a null check | ||
| 5 | |||
| 6 | Fix #20642 | ||
| 7 | |||
| 8 | Upstream-Status: Backport [https://gitlab.com/wireshark/wireshark/-/commit/39daba5e247ea495f88b0be82f0b7ebbdbf50fba] | ||
| 9 | CVE: CVE-2025-9817 | ||
| 10 | Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> | ||
| 11 | --- | ||
| 12 | epan/dissectors/packet-ssh.c | 4 ++++ | ||
| 13 | 1 file changed, 4 insertions(+) | ||
| 14 | |||
| 15 | diff --git a/epan/dissectors/packet-ssh.c b/epan/dissectors/packet-ssh.c | ||
| 16 | index 4f2b0ff..9b3b904 100644 | ||
| 17 | --- a/epan/dissectors/packet-ssh.c | ||
| 18 | +++ b/epan/dissectors/packet-ssh.c | ||
| 19 | @@ -2359,6 +2359,10 @@ ssh_kex_shared_secret(gint kex_type, ssh_bignum *pub, ssh_bignum *priv, ssh_bign | ||
| 20 | } | ||
| 21 | |||
| 22 | if(kex_type==SSH_KEX_DH_GEX){ | ||
| 23 | + if (modulo == NULL) { | ||
| 24 | + ws_debug("Missing group modulo"); | ||
| 25 | + return NULL; | ||
| 26 | + } | ||
| 27 | gcry_mpi_t b = NULL; | ||
| 28 | gcry_mpi_scan(&b, GCRYMPI_FMT_USG, pub->data, pub->length, NULL); | ||
| 29 | gcry_mpi_t d = NULL, e = NULL, m = NULL; | ||
| 30 | -- | ||
| 31 | 2.43.0 | ||
| 32 | |||
diff --git a/meta-networking/recipes-support/wireshark/wireshark_4.2.12.bb b/meta-networking/recipes-support/wireshark/wireshark_4.2.14.bb index dc987e08ac..bd014055a9 100644 --- a/meta-networking/recipes-support/wireshark/wireshark_4.2.12.bb +++ b/meta-networking/recipes-support/wireshark/wireshark_4.2.14.bb | |||
| @@ -13,11 +13,12 @@ SRC_URI = "https://1.eu.dl.wireshark.org/src/all-versions/wireshark-${PV}.tar.xz | |||
| 13 | file://0002-flex-Remove-line-directives.patch \ | 13 | file://0002-flex-Remove-line-directives.patch \ |
| 14 | file://0004-lemon-Remove-line-directives.patch \ | 14 | file://0004-lemon-Remove-line-directives.patch \ |
| 15 | file://0001-UseLemon.cmake-do-not-use-lemon-data-from-the-host.patch \ | 15 | file://0001-UseLemon.cmake-do-not-use-lemon-data-from-the-host.patch \ |
| 16 | file://CVE-2025-9817.patch \ | ||
| 16 | " | 17 | " |
| 17 | 18 | ||
| 18 | UPSTREAM_CHECK_URI = "https://1.as.dl.wireshark.org/src/all-versions" | 19 | UPSTREAM_CHECK_URI = "https://1.as.dl.wireshark.org/src/all-versions" |
| 19 | 20 | ||
| 20 | SRC_URI[sha256sum] = "6ed51da5f6638aba609be8d1d64a7a85312749a49261146c391fea391a3e5f06" | 21 | SRC_URI[sha256sum] = "098177f021951638f5bdca5b01f284c14fcc3f6c804f7aa2ca00fdcb99c7a166" |
| 21 | 22 | ||
| 22 | PE = "1" | 23 | PE = "1" |
| 23 | 24 | ||
diff --git a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc index 825747d522..0a5bbf5fe5 100644 --- a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc +++ b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc | |||
| @@ -20,6 +20,7 @@ PTESTS_FAST_META_OE = "\ | |||
| 20 | jq \ | 20 | jq \ |
| 21 | leveldb \ | 21 | leveldb \ |
| 22 | libcereal \ | 22 | libcereal \ |
| 23 | libdbi-perl \ | ||
| 23 | libgpiod \ | 24 | libgpiod \ |
| 24 | libjcat \ | 25 | libjcat \ |
| 25 | libio-pty-perl \ | 26 | libio-pty-perl \ |
| @@ -32,6 +33,7 @@ PTESTS_FAST_META_OE = "\ | |||
| 32 | libxml++-5.0 \ | 33 | libxml++-5.0 \ |
| 33 | libyang \ | 34 | libyang \ |
| 34 | lmdb \ | 35 | lmdb \ |
| 36 | mbedtls \ | ||
| 35 | microsoft-gsl \ | 37 | microsoft-gsl \ |
| 36 | minicoredumper \ | 38 | minicoredumper \ |
| 37 | minizip-ng \ | 39 | minizip-ng \ |
| @@ -71,7 +73,6 @@ PTESTS_SLOW_META_OE:remove:libc-musl = "kernel-selftest" | |||
| 71 | 73 | ||
| 72 | PTESTS_PROBLEMS_META_OE = "\ | 74 | PTESTS_PROBLEMS_META_OE = "\ |
| 73 | keyutils \ | 75 | keyutils \ |
| 74 | libdbi-perl \ | ||
| 75 | mariadb \ | 76 | mariadb \ |
| 76 | ostree \ | 77 | ostree \ |
| 77 | poco \ | 78 | poco \ |
diff --git a/meta-oe/recipes-connectivity/hostapd/hostapd/CVE-2025-24912-01.patch b/meta-oe/recipes-connectivity/hostapd/hostapd/CVE-2025-24912-01.patch new file mode 100644 index 0000000000..36660b5880 --- /dev/null +++ b/meta-oe/recipes-connectivity/hostapd/hostapd/CVE-2025-24912-01.patch | |||
| @@ -0,0 +1,79 @@ | |||
| 1 | From 726432d7622cc0088ac353d073b59628b590ea44 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Jouni Malinen <j@w1.fi> | ||
| 3 | Date: Sat, 25 Jan 2025 11:21:16 +0200 | ||
| 4 | Subject: [PATCH] RADIUS: Drop pending request only when accepting the response | ||
| 5 | |||
| 6 | The case of an invalid authenticator in a RADIUS response could imply | ||
| 7 | that the response is not from the correct RADIUS server and as such, | ||
| 8 | such a response should be discarded without changing internal state for | ||
| 9 | the pending request. The case of an unknown response (RADIUS_RX_UNKNOWN) | ||
| 10 | is somewhat more complex since it could have been indicated before | ||
| 11 | validating the authenticator. In any case, it seems better to change the | ||
| 12 | state for the pending request only when we have fully accepted the | ||
| 13 | response. | ||
| 14 | |||
| 15 | Allowing the internal state of pending RADIUS request to change based on | ||
| 16 | responses that are not fully validation could have allow at least a | ||
| 17 | theoretical DoS attack if an attacker were to have means for injecting | ||
| 18 | RADIUS messages to the network using the IP address of the real RADIUS | ||
| 19 | server and being able to do so more quickly than the real server and | ||
| 20 | with the matching identifier from the request header (i.e., either by | ||
| 21 | flooding 256 responses quickly or by having means to capture the RADIUS | ||
| 22 | request). These should not really be realistic options in a properly | ||
| 23 | protected deployment, but nevertheless it is good to be more careful in | ||
| 24 | processing RADIUS responses. | ||
| 25 | |||
| 26 | Remove a pending RADIUS request from the internal list only when having | ||
| 27 | fully accepted a matching RADIUS response, i.e., after one of the | ||
| 28 | registered handlers has confirmed that the authenticator is valid and | ||
| 29 | processing of the response has succeeded. | ||
| 30 | |||
| 31 | Signed-off-by: Jouni Malinen <j@w1.fi> | ||
| 32 | |||
| 33 | CVE: CVE-2025-24912 | ||
| 34 | Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=726432d7622cc0088ac353d073b59628b590ea44] | ||
| 35 | Signed-off-by: Peter Marko <peter.marko@siemens.com> | ||
| 36 | --- | ||
| 37 | src/radius/radius_client.c | 15 +++++++-------- | ||
| 38 | 1 file changed, 7 insertions(+), 8 deletions(-) | ||
| 39 | |||
| 40 | diff --git a/src/radius/radius_client.c b/src/radius/radius_client.c | ||
| 41 | index 2a7f36170..7909b29a7 100644 | ||
| 42 | --- a/src/radius/radius_client.c | ||
| 43 | +++ b/src/radius/radius_client.c | ||
| 44 | @@ -1259,13 +1259,6 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx) | ||
| 45 | roundtrip / 100, roundtrip % 100); | ||
| 46 | rconf->round_trip_time = roundtrip; | ||
| 47 | |||
| 48 | - /* Remove ACKed RADIUS packet from retransmit list */ | ||
| 49 | - if (prev_req) | ||
| 50 | - prev_req->next = req->next; | ||
| 51 | - else | ||
| 52 | - radius->msgs = req->next; | ||
| 53 | - radius->num_msgs--; | ||
| 54 | - | ||
| 55 | for (i = 0; i < num_handlers; i++) { | ||
| 56 | RadiusRxResult res; | ||
| 57 | res = handlers[i].handler(msg, req->msg, req->shared_secret, | ||
| 58 | @@ -1276,6 +1269,13 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx) | ||
| 59 | radius_msg_free(msg); | ||
| 60 | /* fall through */ | ||
| 61 | case RADIUS_RX_QUEUED: | ||
| 62 | + /* Remove ACKed RADIUS packet from retransmit list */ | ||
| 63 | + if (prev_req) | ||
| 64 | + prev_req->next = req->next; | ||
| 65 | + else | ||
| 66 | + radius->msgs = req->next; | ||
| 67 | + radius->num_msgs--; | ||
| 68 | + | ||
| 69 | radius_client_msg_free(req); | ||
| 70 | return; | ||
| 71 | case RADIUS_RX_INVALID_AUTHENTICATOR: | ||
| 72 | @@ -1297,7 +1297,6 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx) | ||
| 73 | msg_type, hdr->code, hdr->identifier, | ||
| 74 | invalid_authenticator ? " [INVALID AUTHENTICATOR]" : | ||
| 75 | ""); | ||
| 76 | - radius_client_msg_free(req); | ||
| 77 | |||
| 78 | fail: | ||
| 79 | radius_msg_free(msg); | ||
diff --git a/meta-oe/recipes-connectivity/hostapd/hostapd/CVE-2025-24912-02.patch b/meta-oe/recipes-connectivity/hostapd/hostapd/CVE-2025-24912-02.patch new file mode 100644 index 0000000000..add2e47048 --- /dev/null +++ b/meta-oe/recipes-connectivity/hostapd/hostapd/CVE-2025-24912-02.patch | |||
| @@ -0,0 +1,70 @@ | |||
| 1 | From 339a334551ca911187cc870f4f97ef08e11db109 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Jouni Malinen <quic_jouni@quicinc.com> | ||
| 3 | Date: Wed, 5 Feb 2025 19:23:39 +0200 | ||
| 4 | Subject: [PATCH] RADIUS: Fix pending request dropping | ||
| 5 | |||
| 6 | A recent change to this moved the place where the processed RADIUS | ||
| 7 | request was removed from the pending list to happen after the message | ||
| 8 | handler had been called. This did not take into account possibility of | ||
| 9 | the handler adding a new pending request in the list and the prev_req | ||
| 10 | pointer not necessarily pointing to the correct entry anymore. As such, | ||
| 11 | some of the pending requests could have been lost and that would result | ||
| 12 | in not being able to process responses to those requests and also, to a | ||
| 13 | memory leak. | ||
| 14 | |||
| 15 | Fix this by determining prev_req at the point when the pending request | ||
| 16 | is being removed, i.e., after the handler function has already added a | ||
| 17 | new entry. | ||
| 18 | |||
| 19 | Fixes: 726432d7622c ("RADIUS: Drop pending request only when accepting the response") | ||
| 20 | Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com> | ||
| 21 | |||
| 22 | CVE: CVE-2025-24912 | ||
| 23 | Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=339a334551ca911187cc870f4f97ef08e11db109] | ||
| 24 | Signed-off-by: Peter Marko <peter.marko@siemens.com> | ||
| 25 | --- | ||
| 26 | src/radius/radius_client.c | 10 +++++++--- | ||
| 27 | 1 file changed, 7 insertions(+), 3 deletions(-) | ||
| 28 | |||
| 29 | diff --git a/src/radius/radius_client.c b/src/radius/radius_client.c | ||
| 30 | index 7909b29a7..d4faa7936 100644 | ||
| 31 | --- a/src/radius/radius_client.c | ||
| 32 | +++ b/src/radius/radius_client.c | ||
| 33 | @@ -1099,7 +1099,7 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx) | ||
| 34 | struct radius_hdr *hdr; | ||
| 35 | struct radius_rx_handler *handlers; | ||
| 36 | size_t num_handlers, i; | ||
| 37 | - struct radius_msg_list *req, *prev_req; | ||
| 38 | + struct radius_msg_list *req, *prev_req, *r; | ||
| 39 | struct os_reltime now; | ||
| 40 | struct hostapd_radius_server *rconf; | ||
| 41 | int invalid_authenticator = 0; | ||
| 42 | @@ -1224,7 +1224,6 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx) | ||
| 43 | break; | ||
| 44 | } | ||
| 45 | |||
| 46 | - prev_req = NULL; | ||
| 47 | req = radius->msgs; | ||
| 48 | while (req) { | ||
| 49 | /* TODO: also match by src addr:port of the packet when using | ||
| 50 | @@ -1236,7 +1235,6 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx) | ||
| 51 | hdr->identifier) | ||
| 52 | break; | ||
| 53 | |||
| 54 | - prev_req = req; | ||
| 55 | req = req->next; | ||
| 56 | } | ||
| 57 | |||
| 58 | @@ -1270,6 +1268,12 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx) | ||
| 59 | /* fall through */ | ||
| 60 | case RADIUS_RX_QUEUED: | ||
| 61 | /* Remove ACKed RADIUS packet from retransmit list */ | ||
| 62 | + prev_req = NULL; | ||
| 63 | + for (r = radius->msgs; r; r = r->next) { | ||
| 64 | + if (r == req) | ||
| 65 | + break; | ||
| 66 | + prev_req = r; | ||
| 67 | + } | ||
| 68 | if (prev_req) | ||
| 69 | prev_req->next = req->next; | ||
| 70 | else | ||
diff --git a/meta-oe/recipes-connectivity/hostapd/hostapd_2.11.bb b/meta-oe/recipes-connectivity/hostapd/hostapd_2.11.bb index daaf2dcd55..a6f7122847 100644 --- a/meta-oe/recipes-connectivity/hostapd/hostapd_2.11.bb +++ b/meta-oe/recipes-connectivity/hostapd/hostapd_2.11.bb | |||
| @@ -12,6 +12,8 @@ SRC_URI = " \ | |||
| 12 | file://defconfig \ | 12 | file://defconfig \ |
| 13 | file://init \ | 13 | file://init \ |
| 14 | file://hostapd.service \ | 14 | file://hostapd.service \ |
| 15 | file://CVE-2025-24912-01.patch \ | ||
| 16 | file://CVE-2025-24912-02.patch \ | ||
| 15 | " | 17 | " |
| 16 | 18 | ||
| 17 | 19 | ||
diff --git a/meta-oe/recipes-support/imagemagick/imagemagick_7.1.2-5.bb b/meta-oe/recipes-support/imagemagick/imagemagick_7.1.2-8.bb index 8ba14261ae..f83adb15f2 100644 --- a/meta-oe/recipes-support/imagemagick/imagemagick_7.1.2-5.bb +++ b/meta-oe/recipes-support/imagemagick/imagemagick_7.1.2-8.bb | |||
| @@ -13,7 +13,7 @@ BASE_PV = "${@d.getVar('PV').split('-')[0]}" | |||
| 13 | UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>([0-9][\.|_|-]?)+)" | 13 | UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>([0-9][\.|_|-]?)+)" |
| 14 | 14 | ||
| 15 | SRC_URI = "git://github.com/ImageMagick/ImageMagick.git;branch=main;protocol=https;tag=${PV}" | 15 | SRC_URI = "git://github.com/ImageMagick/ImageMagick.git;branch=main;protocol=https;tag=${PV}" |
| 16 | SRCREV = "4a620c2a89a7481e83cb4a0ff32db0ccbb3afcd2" | 16 | SRCREV = "a3b13d143fd7dea44cd71d31aa02f411b597688f" |
| 17 | 17 | ||
| 18 | 18 | ||
| 19 | inherit autotools pkgconfig update-alternatives | 19 | inherit autotools pkgconfig update-alternatives |
diff --git a/meta-oe/recipes-support/libtinyxml2/libtinyxml2_11.0.0.bb b/meta-oe/recipes-support/libtinyxml2/libtinyxml2_11.0.0.bb index 89e6eca99b..d295b99f3d 100644 --- a/meta-oe/recipes-support/libtinyxml2/libtinyxml2_11.0.0.bb +++ b/meta-oe/recipes-support/libtinyxml2/libtinyxml2_11.0.0.bb | |||
| @@ -9,14 +9,13 @@ SRCREV = "9148bdf719e997d1f474be6bcc7943881046dba1" | |||
| 9 | SRC_URI = "git://github.com/leethomason/tinyxml2.git;branch=master;protocol=https \ | 9 | SRC_URI = "git://github.com/leethomason/tinyxml2.git;branch=master;protocol=https \ |
| 10 | file://run-ptest" | 10 | file://run-ptest" |
| 11 | 11 | ||
| 12 | inherit cmake ptest | ||
| 12 | 13 | ||
| 13 | inherit meson ptest | 14 | EXTRA_OECMAKE += "${@bb.utils.contains('PTEST_ENABLED', '1', '-Dtinyxml2_BUILD_TESTING=ON', '', d)}" |
| 14 | |||
| 15 | EXTRA_OEMESON += " \ | ||
| 16 | ${@bb.utils.contains('PTEST_ENABLED', '1', '-Dtests=true', '', d)} \ | ||
| 17 | -Ddefault_library=both \ | ||
| 18 | " | ||
| 19 | 15 | ||
| 16 | PACKAGECONFIG ?= "shared-libs" | ||
| 17 | PACKAGECONFIG[shared-libs] = "-DBUILD_SHARED_LIBS=ON,-DBUILD_SHARED_LIBS=OFF" | ||
| 18 | |||
| 20 | CXXFLAGS:append:libc-musl = " -D_LARGEFILE64_SOURCE" | 19 | CXXFLAGS:append:libc-musl = " -D_LARGEFILE64_SOURCE" |
| 21 | 20 | ||
| 22 | do_install_ptest() { | 21 | do_install_ptest() { |
diff --git a/meta-oe/recipes-test/googletest/googletest/gtest-ciso646.patch b/meta-oe/recipes-test/googletest/googletest/gtest-ciso646.patch deleted file mode 100644 index 814912650b..0000000000 --- a/meta-oe/recipes-test/googletest/googletest/gtest-ciso646.patch +++ /dev/null | |||
| @@ -1,26 +0,0 @@ | |||
| 1 | https://github.com/google/googletest/issues/4701 | ||
| 2 | |||
| 3 | taken from fedora: | ||
| 4 | https://src.fedoraproject.org/rpms/gtest/c/b3fe6f803a1e554971f70e1c3f55aa5fcb377b1b?branch=rawhide | ||
| 5 | |||
| 6 | Upstream-Status: Pending | ||
| 7 | Signed-off-by: Martin Jansa <martin.jansa@gmail.com> | ||
| 8 | |||
| 9 | --- ./googletest/include/gtest/internal/gtest-port.h.orig 2025-01-27 03:39:18.963893931 +0000 | ||
| 10 | +++ ./googletest/include/gtest/internal/gtest-port.h 2025-01-28 13:57:51.381081952 +0000 | ||
| 11 | @@ -288,11 +288,11 @@ | ||
| 12 | |||
| 13 | // Detect C++ feature test macros as gracefully as possible. | ||
| 14 | // MSVC >= 19.15, Clang >= 3.4.1, and GCC >= 4.1.2 support feature test macros. | ||
| 15 | -#if GTEST_INTERNAL_CPLUSPLUS_LANG >= 202002L && \ | ||
| 16 | - (!defined(__has_include) || GTEST_INTERNAL_HAS_INCLUDE(<version>)) | ||
| 17 | +#if GTEST_INTERNAL_HAS_INCLUDE(<version>) || \ | ||
| 18 | + (GTEST_INTERNAL_CPLUSPLUS_LANG >= 202002L && !defined(__has_include)) | ||
| 19 | #include <version> // C++20 and later | ||
| 20 | -#elif (!defined(__has_include) || GTEST_INTERNAL_HAS_INCLUDE(<ciso646>)) | ||
| 21 | -#include <ciso646> // Pre-C++20 | ||
| 22 | +#else | ||
| 23 | +#include <cerrno> // Pre-C++20 | ||
| 24 | #endif | ||
| 25 | |||
| 26 | #include <ctype.h> // for isspace, etc | ||
diff --git a/meta-oe/recipes-test/googletest/googletest_1.16.0.bb b/meta-oe/recipes-test/googletest/googletest_1.17.0.bb index 55d670a428..c8ed80053d 100644 --- a/meta-oe/recipes-test/googletest/googletest_1.16.0.bb +++ b/meta-oe/recipes-test/googletest/googletest_1.17.0.bb | |||
| @@ -6,10 +6,9 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=cbbd27594afd089daa160d3a16dd515a" | |||
| 6 | 6 | ||
| 7 | PROVIDES += "gmock gtest" | 7 | PROVIDES += "gmock gtest" |
| 8 | 8 | ||
| 9 | SRCREV = "6910c9d9165801d8827d628cb72eb7ea9dd538c5" | 9 | SRC_URI = "git://github.com/google/googletest.git;branch=v1.17.x;protocol=https \ |
| 10 | SRC_URI = "git://github.com/google/googletest.git;branch=v1.16.x;protocol=https \ | 10 | " |
| 11 | file://gtest-ciso646.patch \ | 11 | SRCREV = "52eb8108c5bdec04579160ae17225d66034bd723" |
| 12 | " | ||
| 13 | 12 | ||
| 14 | inherit cmake pkgconfig | 13 | inherit cmake pkgconfig |
| 15 | 14 | ||
diff --git a/meta-python/recipes-devtools/python/python3-m2crypto/0001-fix-allow-64-bit-time_t-on-32-bit-systems-in-test_is.patch b/meta-python/recipes-devtools/python/python3-m2crypto/0001-fix-allow-64-bit-time_t-on-32-bit-systems-in-test_is.patch new file mode 100644 index 0000000000..d49950074f --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-m2crypto/0001-fix-allow-64-bit-time_t-on-32-bit-systems-in-test_is.patch | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | From d123b4ddce99c44f2c290fb3d6cc887de98778e6 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Haixiao Yan <haixiao.yan.cn@windriver.com> | ||
| 3 | Date: Wed, 22 Oct 2025 15:23:56 +0800 | ||
| 4 | Subject: [PATCH 1/2] fix: allow 64-bit time_t on 32-bit systems in | ||
| 5 | test_is32bit | ||
| 6 | |||
| 7 | Some modern 32-bit Linux systems (e.g. with glibc >= 2.34 or musl time64 ABI) | ||
| 8 | use 64-bit time_t by default when _TIME_BITS=64 is enabled. The original test | ||
| 9 | assumed time_t was always 32-bit on 32-bit architectures, which is no longer | ||
| 10 | true. | ||
| 11 | |||
| 12 | Relax the check to accept both 32-bit and 64-bit time_t values: | ||
| 13 | |||
| 14 | self.assertIn(bit32, (32, 64)) | ||
| 15 | |||
| 16 | This makes the test compatible with both legacy and time64 ABIs. | ||
| 17 | |||
| 18 | Upstream-Status: Backport [https://gitlab.com/m2crypto/m2crypto/-/commit/818c3dfda6ea] | ||
| 19 | |||
| 20 | Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com> | ||
| 21 | --- | ||
| 22 | tests/test_util.py | 2 +- | ||
| 23 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
| 24 | |||
| 25 | diff --git a/tests/test_util.py b/tests/test_util.py | ||
| 26 | index e925d03b090c..233fb7a099d9 100644 | ||
| 27 | --- a/tests/test_util.py | ||
| 28 | +++ b/tests/test_util.py | ||
| 29 | @@ -26,7 +26,7 @@ class UtilTestCase(unittest.TestCase): | ||
| 30 | not in ["true", "1", "yes"] | ||
| 31 | ) | ||
| 32 | ): | ||
| 33 | - self.assertEqual(bit32, 32) | ||
| 34 | + self.assertIn(bit32, (32, 64)) | ||
| 35 | else: | ||
| 36 | self.assertNotEqual(bit32, 32) | ||
| 37 | self.assertIsInstance(bit32, int) | ||
| 38 | -- | ||
| 39 | 2.34.1 | ||
| 40 | |||
diff --git a/meta-python/recipes-devtools/python/python3-m2crypto/0002-fix-correct-struct-packing-on-32-bit-with-_TIME_BITS.patch b/meta-python/recipes-devtools/python/python3-m2crypto/0002-fix-correct-struct-packing-on-32-bit-with-_TIME_BITS.patch new file mode 100644 index 0000000000..c36afa5cc0 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-m2crypto/0002-fix-correct-struct-packing-on-32-bit-with-_TIME_BITS.patch | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | From b5dbfca23986429853ccb15a38cc526d9df0dd40 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Haixiao Yan <haixiao.yan.cn@windriver.com> | ||
| 3 | Date: Wed, 22 Oct 2025 15:23:57 +0800 | ||
| 4 | Subject: [PATCH 2/2] fix: correct struct packing on 32-bit with _TIME_BITS=64 | ||
| 5 | |||
| 6 | On 32-bit platforms with glibc time64 ABI, time_t is 64-bit wide while | ||
| 7 | `long` remains 32-bit. This causes struct timeval to use two 64-bit fields | ||
| 8 | (tv_sec, tv_usec). The previous code incorrectly packed timeout as "ll", | ||
| 9 | leading to EINVAL in setsockopt(SO_RCVTIMEO). | ||
| 10 | |||
| 11 | Use "qq" instead when m2.time_t_bits() == 64 to match the actual ABI. | ||
| 12 | |||
| 13 | Fixes: https://todo.sr.ht/~mcepl/m2crypto/374 | ||
| 14 | |||
| 15 | Upstream-Status: Backport [https://gitlab.com/m2crypto/m2crypto/-/commit/473de659f78e] | ||
| 16 | |||
| 17 | Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com> | ||
| 18 | --- | ||
| 19 | src/M2Crypto/SSL/timeout.py | 24 ++++++++++++++++++++---- | ||
| 20 | 1 file changed, 20 insertions(+), 4 deletions(-) | ||
| 21 | |||
| 22 | diff --git a/src/M2Crypto/SSL/timeout.py b/src/M2Crypto/SSL/timeout.py | ||
| 23 | index b45f38b1cbdb..5ba52283b6f8 100644 | ||
| 24 | --- a/src/M2Crypto/SSL/timeout.py | ||
| 25 | +++ b/src/M2Crypto/SSL/timeout.py | ||
| 26 | @@ -33,10 +33,14 @@ class timeout(object): | ||
| 27 | millisec = int(self.sec * 1000 + round(float(self.microsec) / 1000)) | ||
| 28 | binstr = struct.pack("l", millisec) | ||
| 29 | else: | ||
| 30 | - if m2.time_t_bits() == 32: | ||
| 31 | + bits = m2.time_t_bits() | ||
| 32 | + if bits == 32: | ||
| 33 | binstr = struct.pack("ii", self.sec, self.microsec) | ||
| 34 | + elif bits == 64: | ||
| 35 | + # handle both 64-bit and 32-bit+TIME_BITS=64 | ||
| 36 | + binstr = struct.pack("qq", self.sec, self.microsec) | ||
| 37 | else: | ||
| 38 | - binstr = struct.pack("ll", self.sec, self.microsec) | ||
| 39 | + raise ValueError(f"Unsupported time_t_bits: {bits}") | ||
| 40 | return binstr | ||
| 41 | |||
| 42 | |||
| 43 | @@ -48,7 +52,13 @@ def struct_to_timeout(binstr: bytes) -> timeout: | ||
| 44 | sec = int(millisec / 1000) | ||
| 45 | microsec = (millisec % 1000) * 1000 | ||
| 46 | else: | ||
| 47 | - (sec, microsec) = struct.unpack("ll", binstr) | ||
| 48 | + bits = m2.time_t_bits() | ||
| 49 | + if bits == 32: | ||
| 50 | + (sec, microsec) = struct.unpack("ii", binstr) | ||
| 51 | + elif bits == 64: | ||
| 52 | + (sec, microsec) = struct.unpack("qq", binstr) | ||
| 53 | + else: | ||
| 54 | + raise ValueError(f"Unsupported time_t_bits: {bits}") | ||
| 55 | return timeout(sec, microsec) | ||
| 56 | |||
| 57 | |||
| 58 | @@ -56,4 +66,10 @@ def struct_size() -> int: | ||
| 59 | if sys.platform == "win32": | ||
| 60 | return struct.calcsize("l") | ||
| 61 | else: | ||
| 62 | - return struct.calcsize("ll") | ||
| 63 | + bits = m2.time_t_bits() | ||
| 64 | + if bits == 32: | ||
| 65 | + return struct.calcsize("ii") | ||
| 66 | + elif bits == 64: | ||
| 67 | + return struct.calcsize("qq") | ||
| 68 | + else: | ||
| 69 | + raise ValueError(f"Unsupported time_t_bits: {bits}") | ||
| 70 | -- | ||
| 71 | 2.34.1 | ||
| 72 | |||
diff --git a/meta-python/recipes-devtools/python/python3-m2crypto_0.46.2.bb b/meta-python/recipes-devtools/python/python3-m2crypto_0.46.2.bb index 0a631c7a07..9aac7b344f 100644 --- a/meta-python/recipes-devtools/python/python3-m2crypto_0.46.2.bb +++ b/meta-python/recipes-devtools/python/python3-m2crypto_0.46.2.bb | |||
| @@ -8,6 +8,8 @@ SRC_URI[sha256sum] = "13c2fa89562f7b8af40cc74b55f490be5e2ab8ccfb739f11c16d3ce622 | |||
| 8 | 8 | ||
| 9 | SRC_URI += " \ | 9 | SRC_URI += " \ |
| 10 | file://0001-setup.py-Make-the-cmd-available.patch \ | 10 | file://0001-setup.py-Make-the-cmd-available.patch \ |
| 11 | file://0001-fix-allow-64-bit-time_t-on-32-bit-systems-in-test_is.patch \ | ||
| 12 | file://0002-fix-correct-struct-packing-on-32-bit-with-_TIME_BITS.patch \ | ||
| 11 | " | 13 | " |
| 12 | 14 | ||
| 13 | inherit pypi siteinfo python_setuptools_build_meta | 15 | inherit pypi siteinfo python_setuptools_build_meta |
