head 1.2; access; symbols pkgsrc-2026Q1:1.1.0.4 pkgsrc-2026Q1-base:1.1 pkgsrc-2025Q4:1.1.0.2; locks; strict; comment @ * @; 1.2 date 2026.05.05.15.20.14; author ktnb; state dead; branches; next 1.1; commitid zKeMYcEMEXFNDDEG; 1.1 date 2026.01.18.13.00.40; author leot; state Exp; branches 1.1.2.1; next ; commitid SOyqfTJG5bmJiSqG; 1.1.2.1 date 2026.01.18.13.00.40; author maya; state dead; branches; next 1.1.2.2; commitid F25rFhfz2lbPDSuG; 1.1.2.2 date 2026.02.18.17.00.59; author maya; state Exp; branches; next ; commitid F25rFhfz2lbPDSuG; desc @@ 1.2 log @dillo: update to 3.3.0 Packaging: - Most patches have been removed thanks to leot@@'s patches being merged upstream! Upstream: - Add optional support for brotli (br) content encoding. - Add about:keys to display current keyboard shortcuts. - Control + left click opens links in new tab (emulates mouse middle button). - Ctrl+C copies selected text into the clipboard so Ctrl+V works as expected. - Enable IPv6 support by default if supported by the platform. - Focus the N-th tab with the Alt+ shortcut. - Fix vsource dpi infinite loop on musl due to unescaped "%" printf format. - Add about:cache and about:dicache pages to show internal cache details. - Add mojeek search engine with shortcut "mj". - Hide form elements (like buttons and inputs) with display:none in CSS. - Increase margin in location bar to make it easier to select with the mouse. - Navigate back and forward with mouse buttons. - Fix OAuth login by allowing cookies in root 30X redirects. - Add support for remote control via a UNIX socket (enabled by default, disable with --disable-control-socket). - Add new dilloc program to remote control dillo from the command line. - Set DILLO_PID variable when executing actions so dilloc can read it. - Add support for "page_action" option to define custom entries in the page menu to run programs or scripts. - Add "mark_unloaded_images" option to show a border in images not loaded, so they are easier to see. - Fix segfault on CurveBall TLS test with LibreSSL. - Match complete search prefixes in "search_url" to avoid partial matches. - Add "trace_http" option to debug HTTP traffic. - Avoid cached responses when submitting forms. - Fix cookie Max-Age parsing using the epoch instead of the local timezone. - Add experimental FLTK >= 1.4 support with the --enable-experimental-fltk configure flag. - Middle click on back or forward button opens page in new tab. - Add support for Content-Disposition header to set the filename. - Fix build in NetBSD and avoid ctype(3) incorrect sign extension. - Fix use-after-free in HTTP server and OpenSSL connection dialog. @ text @$NetBSD: patch-dpi_bookmarks.c,v 1.1 2026/01/18 13:00:40 leot Exp $ Avoid ctype(3) abuses Valid argument of ctype(3) functions must be either EOF or non-negative value within the range representable as unsigned char. Invalid values leads to undefined behavior. Add all missing d*() ctype(3) helper functions and switch to use them. Noticed by running dillo on NetBSD where dillo crashes due such abuses. See: https://lists.mailman3.com/hyperkitty/list/dillo-dev@@mailman3.com/thread/L6QLXSD6UBDK3M5CMXQMRWD6ZB4C65MR/ --- dpi/bookmarks.c.orig 2025-01-18 10:51:30.000000000 +0000 +++ dpi/bookmarks.c @@@@ -26,7 +26,6 @@@@ #include #include #include -#include #include #include #include @@@@ -338,8 +337,8 @@@@ static void Unencode_str(char *e_str) *p = '\n'; e += 5; } else { - *p = (isdigit(e[1]) ? (e[1] - '0') : (e[1] - 'A' + 10)) * 16 + - (isdigit(e[2]) ? (e[2] - '0') : (e[2] - 'A' + 10)); + *p = (dIsdigit(e[1]) ? (e[1] - '0') : (e[1] - 'A' + 10)) * 16 + + (dIsdigit(e[2]) ? (e[2] - '0') : (e[2] - 'A' + 10)); e += 2; } } else { @@@@ -807,11 +806,11 @@@@ static void Bmsrv_count_urls_and_section *n_sec = *n_url = 0; if ((p = strchr(url, '?'))) { for (q = p; (q = strstr(q, "&url")); ++q) { - for (i = 0; isdigit(q[4+i]); ++i); + for (i = 0; dIsdigit(q[4+i]); ++i); *n_url += (q[4+i] == '=') ? 1 : 0; } for (q = p; (q = strstr(q, "&s")); ++q) { - for (i = 0; isdigit(q[2+i]); ++i); + for (i = 0; dIsdigit(q[2+i]); ++i); *n_sec += (q[2+i] == '=') ? 1 : 0; } } @@@@ -972,7 +971,7 @@@@ static int Bmsrv_send_modify_update(Dsh /* send items here */ p = strchr(url1, '?'); for (q = p; (q = strstr(q, "&s")); ++q) { - for (i = 0; isdigit(q[2+i]); ++i); + for (i = 0; dIsdigit(q[2+i]); ++i); if (q[2+i] == '=') { key = strtol(q + 2, NULL, 10); if ((sec_node = Bms_get_sec(key))) { @@@@ -992,7 +991,7 @@@@ static int Bmsrv_send_modify_update(Dsh /* send items here */ p = strchr(url1, '?'); for (q = p; (q = strstr(q, "&url")); ++q) { - for (i = 0; isdigit(q[4+i]); ++i); + for (i = 0; dIsdigit(q[4+i]); ++i); if (q[4+i] == '=') { key = strtol(q + 4, NULL, 10); bm_node = Bms_get(key); @@@@ -1060,7 +1059,7 @@@@ static int Bmsrv_modify_delete(char *url /* Remove marked sections */ p = strchr(url, '?'); for (ns = 0; (p = strstr(p, "&s")); ++p) { - if (isdigit(p[2])) { + if (dIsdigit(p[2])) { key = strtol(p + 2, NULL, 10); Bms_sec_del(key); ++ns; @@@@ -1070,7 +1069,7 @@@@ static int Bmsrv_modify_delete(char *url /* Remove marked urls */ p = strchr(url, '?'); for (nb = 0; (p = strstr(p, "&url")); ++p) { - if (isdigit(p[4])) { + if (dIsdigit(p[4])) { key = strtol(p + 4, NULL, 10); Bms_del(key); ++nb; @@@@ -1105,7 +1104,7 @@@@ static int Bmsrv_modify_move(char *url) /* get target section */ for (p = url; (p = strstr(p, "&s")); ++p) { - if (isdigit(p[2])) { + if (dIsdigit(p[2])) { section = strtol(p + 2, NULL, 10); break; } @@@@ -1116,7 +1115,7 @@@@ static int Bmsrv_modify_move(char *url) /* move marked urls */ p = strchr(url, '?'); for (n = 0; (p = strstr(p, "&url")); ++p) { - if (isdigit(p[4])) { + if (dIsdigit(p[4])) { key = strtol(p + 4, NULL, 10); Bms_move(key, section); ++n; @@@@ -1145,7 +1144,7 @@@@ static int Bmsrv_modify_update(char *url p = strchr(url, '?'); for ( ; (p = strstr(p, "s")); ++p) { if (p[-1] == '&' || p[-1] == '?' ) { - for (i = 0; isdigit(p[1 + i]); ++i); + for (i = 0; dIsdigit(p[1 + i]); ++i); if (i && p[1 + i] == '=') { /* we have a title/key to change */ key = strtol(p + 1, NULL, 10); @@@@ -1164,7 +1163,7 @@@@ static int Bmsrv_modify_update(char *url p = strchr(url, '?'); for ( ; (p = strstr(p, "title")); ++p) { if (p[-1] == '&' || p[-1] == '?' ) { - for (i = 0; isdigit(p[5 + i]); ++i); + for (i = 0; dIsdigit(p[5 + i]); ++i); if (i && p[5 + i] == '=') { /* we have a title/key to change */ key = strtol(p + 5, NULL, 10); @@@@ -1229,7 +1228,7 @@@@ static int Bmsrv_modify_add_url(Dsh *sh, if (sh == NULL) { /* look for section */ for (q = s_url; (q = strstr(q, "&s")); ++q) { - for (i = 0; isdigit(q[2+i]); ++i); + for (i = 0; dIsdigit(q[2+i]); ++i); if (q[2+i] == '=') section = strtol(q + 2, NULL, 10); } @ 1.1 log @dillo: Avoid ctype(3) abuses Backport a patch shared and applied upstream via commit 5e2bc90ea2f80dce3a20ef9c1a282e11d6d67236 to stop abusing ctype(3) functions. Now dillo should no longer crashes due ctype(3) on NetBSD>=11. PKGREVISION++ @ text @d1 1 a1 1 $NetBSD$ @ 1.1.2.1 log @file patch-dpi_bookmarks.c was added on branch pkgsrc-2025Q4 on 2026-02-18 17:00:59 +0000 @ text @d1 131 @ 1.1.2.2 log @Pullup ticket #7052 - requested by leot www/dillo: Bug fix Revisions pulled up: - www/dillo/Makefile 1.98 - www/dillo/distinfo 1.47 - www/dillo/patches/patch-dlib_dlib.c 1.1 - www/dillo/patches/patch-dlib_dlib.h 1.1 - www/dillo/patches/patch-dpi_bookmarks.c 1.1 - www/dillo/patches/patch-dpi_cookies.c 1.1 - www/dillo/patches/patch-dpi_datauri.c 1.1 - www/dillo/patches/patch-dpi_downloads.cc 1.1 - www/dillo/patches/patch-dpi_dpiutil.c 1.1 - www/dillo/patches/patch-dpi_file.c 1.1 - www/dillo/patches/patch-dpi_ftp.c 1.1 - www/dillo/patches/patch-dpid_dpidc.c 1.1 - www/dillo/patches/patch-dpip_dpip.c 1.1 - www/dillo/patches/patch-dw_findtext.hh 1.1 - www/dillo/patches/patch-dw_fltkui.cc 1.1 - www/dillo/patches/patch-dw_style.cc 1.1 - www/dillo/patches/patch-dw_textblock.cc 1.1 - www/dillo/patches/patch-lout_misc.cc 1.1 - www/dillo/patches/patch-src_IO_dpi.c 1.1 - www/dillo/patches/patch-src_IO_http.c 1.1 - www/dillo/patches/patch-src_IO_tls__openssl.c 1.1 - www/dillo/patches/patch-src_auth.c 1.1 - www/dillo/patches/patch-src_colors.c 1.1 - www/dillo/patches/patch-src_cookies.c 1.1 - www/dillo/patches/patch-src_cssparser.cc 1.1 - www/dillo/patches/patch-src_hsts.c 1.1 - www/dillo/patches/patch-src_html.cc 1.1 - www/dillo/patches/patch-src_keys.cc 1.1 - www/dillo/patches/patch-src_misc.c 1.1 - www/dillo/patches/patch-src_table.cc 1.1 - www/dillo/patches/patch-src_url.c 1.1 - www/dillo/patches/patch-src_xembed.cc 1.1 - www/dillo/patches/patch-test_dw_dw__anchors__test.cc 1.1 - www/dillo/patches/patch-test_unit_cookies.c 1.1 --- Module Name: pkgsrc Committed By: leot Date: Sun Jan 18 13:00:41 UTC 2026 Modified Files: pkgsrc/www/dillo: Makefile distinfo Added Files: pkgsrc/www/dillo/patches: patch-dlib_dlib.c patch-dlib_dlib.h patch-dpi_bookmarks.c patch-dpi_cookies.c patch-dpi_datauri.c patch-dpi_downloads.cc patch-dpi_dpiutil.c patch-dpi_file.c patch-dpi_ftp.c patch-dpid_dpidc.c patch-dpip_dpip.c patch-dw_findtext.hh patch-dw_fltkui.cc patch-dw_style.cc patch-dw_textblock.cc patch-lout_misc.cc patch-src_IO_dpi.c patch-src_IO_http.c patch-src_IO_tls__openssl.c patch-src_auth.c patch-src_colors.c patch-src_cookies.c patch-src_cssparser.cc patch-src_hsts.c patch-src_html.cc patch-src_keys.cc patch-src_misc.c patch-src_table.cc patch-src_url.c patch-src_xembed.cc patch-test_dw_dw__anchors__test.cc patch-test_unit_cookies.c Log Message: dillo: Avoid ctype(3) abuses Backport a patch shared and applied upstream via commit 5e2bc90ea2f80dce3a20ef9c1a282e11d6d67236 to stop abusing ctype(3) functions. Now dillo should no longer crashes due ctype(3) on NetBSD>=11. PKGREVISION++ @ text @a0 131 $NetBSD: patch-dpi_bookmarks.c,v 1.1 2026/01/18 13:00:40 leot Exp $ Avoid ctype(3) abuses Valid argument of ctype(3) functions must be either EOF or non-negative value within the range representable as unsigned char. Invalid values leads to undefined behavior. Add all missing d*() ctype(3) helper functions and switch to use them. Noticed by running dillo on NetBSD where dillo crashes due such abuses. See: https://lists.mailman3.com/hyperkitty/list/dillo-dev@@mailman3.com/thread/L6QLXSD6UBDK3M5CMXQMRWD6ZB4C65MR/ --- dpi/bookmarks.c.orig 2025-01-18 10:51:30.000000000 +0000 +++ dpi/bookmarks.c @@@@ -26,7 +26,6 @@@@ #include #include #include -#include #include #include #include @@@@ -338,8 +337,8 @@@@ static void Unencode_str(char *e_str) *p = '\n'; e += 5; } else { - *p = (isdigit(e[1]) ? (e[1] - '0') : (e[1] - 'A' + 10)) * 16 + - (isdigit(e[2]) ? (e[2] - '0') : (e[2] - 'A' + 10)); + *p = (dIsdigit(e[1]) ? (e[1] - '0') : (e[1] - 'A' + 10)) * 16 + + (dIsdigit(e[2]) ? (e[2] - '0') : (e[2] - 'A' + 10)); e += 2; } } else { @@@@ -807,11 +806,11 @@@@ static void Bmsrv_count_urls_and_section *n_sec = *n_url = 0; if ((p = strchr(url, '?'))) { for (q = p; (q = strstr(q, "&url")); ++q) { - for (i = 0; isdigit(q[4+i]); ++i); + for (i = 0; dIsdigit(q[4+i]); ++i); *n_url += (q[4+i] == '=') ? 1 : 0; } for (q = p; (q = strstr(q, "&s")); ++q) { - for (i = 0; isdigit(q[2+i]); ++i); + for (i = 0; dIsdigit(q[2+i]); ++i); *n_sec += (q[2+i] == '=') ? 1 : 0; } } @@@@ -972,7 +971,7 @@@@ static int Bmsrv_send_modify_update(Dsh /* send items here */ p = strchr(url1, '?'); for (q = p; (q = strstr(q, "&s")); ++q) { - for (i = 0; isdigit(q[2+i]); ++i); + for (i = 0; dIsdigit(q[2+i]); ++i); if (q[2+i] == '=') { key = strtol(q + 2, NULL, 10); if ((sec_node = Bms_get_sec(key))) { @@@@ -992,7 +991,7 @@@@ static int Bmsrv_send_modify_update(Dsh /* send items here */ p = strchr(url1, '?'); for (q = p; (q = strstr(q, "&url")); ++q) { - for (i = 0; isdigit(q[4+i]); ++i); + for (i = 0; dIsdigit(q[4+i]); ++i); if (q[4+i] == '=') { key = strtol(q + 4, NULL, 10); bm_node = Bms_get(key); @@@@ -1060,7 +1059,7 @@@@ static int Bmsrv_modify_delete(char *url /* Remove marked sections */ p = strchr(url, '?'); for (ns = 0; (p = strstr(p, "&s")); ++p) { - if (isdigit(p[2])) { + if (dIsdigit(p[2])) { key = strtol(p + 2, NULL, 10); Bms_sec_del(key); ++ns; @@@@ -1070,7 +1069,7 @@@@ static int Bmsrv_modify_delete(char *url /* Remove marked urls */ p = strchr(url, '?'); for (nb = 0; (p = strstr(p, "&url")); ++p) { - if (isdigit(p[4])) { + if (dIsdigit(p[4])) { key = strtol(p + 4, NULL, 10); Bms_del(key); ++nb; @@@@ -1105,7 +1104,7 @@@@ static int Bmsrv_modify_move(char *url) /* get target section */ for (p = url; (p = strstr(p, "&s")); ++p) { - if (isdigit(p[2])) { + if (dIsdigit(p[2])) { section = strtol(p + 2, NULL, 10); break; } @@@@ -1116,7 +1115,7 @@@@ static int Bmsrv_modify_move(char *url) /* move marked urls */ p = strchr(url, '?'); for (n = 0; (p = strstr(p, "&url")); ++p) { - if (isdigit(p[4])) { + if (dIsdigit(p[4])) { key = strtol(p + 4, NULL, 10); Bms_move(key, section); ++n; @@@@ -1145,7 +1144,7 @@@@ static int Bmsrv_modify_update(char *url p = strchr(url, '?'); for ( ; (p = strstr(p, "s")); ++p) { if (p[-1] == '&' || p[-1] == '?' ) { - for (i = 0; isdigit(p[1 + i]); ++i); + for (i = 0; dIsdigit(p[1 + i]); ++i); if (i && p[1 + i] == '=') { /* we have a title/key to change */ key = strtol(p + 1, NULL, 10); @@@@ -1164,7 +1163,7 @@@@ static int Bmsrv_modify_update(char *url p = strchr(url, '?'); for ( ; (p = strstr(p, "title")); ++p) { if (p[-1] == '&' || p[-1] == '?' ) { - for (i = 0; isdigit(p[5 + i]); ++i); + for (i = 0; dIsdigit(p[5 + i]); ++i); if (i && p[5 + i] == '=') { /* we have a title/key to change */ key = strtol(p + 5, NULL, 10); @@@@ -1229,7 +1228,7 @@@@ static int Bmsrv_modify_add_url(Dsh *sh, if (sh == NULL) { /* look for section */ for (q = s_url; (q = strstr(q, "&s")); ++q) { - for (i = 0; isdigit(q[2+i]); ++i); + for (i = 0; dIsdigit(q[2+i]); ++i); if (q[2+i] == '=') section = strtol(q + 2, NULL, 10); } @