From 0189e8aa5c4c4919a9bbc4dcbe0e521aada51e3c Mon Sep 17 00:00:00 2001 From: Robert Alm Nilsson Date: Sun, 18 Sep 2022 10:49:28 +0200 Subject: [PATCH] Only read title when in head Before this change, it was possible that w3m would interpret a title tag under e.g. an svg tag as the page title. --- file.c | 30 +++++++++++++++++++----------- fm.h | 1 + 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/file.c b/file.c index 21d17fc..f5fb744 100644 --- a/file.c +++ b/file.c @@ -4817,19 +4817,23 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env) /* obuf->flag |= RB_IGNORE_P; */ return 1; case HTML_TITLE: - close_anchor(h_env, obuf); - process_title(tag); - obuf->flag |= RB_TITLE; - obuf->end_tag = HTML_N_TITLE; + if (obuf->flag & RB_HEAD) { + close_anchor(h_env, obuf); + process_title(tag); + obuf->flag |= RB_TITLE; + obuf->end_tag = HTML_N_TITLE; + } return 1; case HTML_N_TITLE: - if (!(obuf->flag & RB_TITLE)) - return 1; - obuf->flag &= ~RB_TITLE; - obuf->end_tag = 0; - tmp = process_n_title(tag); - if (tmp) - HTMLlineproc1(tmp->ptr, h_env); + if (obuf->flag & RB_HEAD) { + if (!(obuf->flag & RB_TITLE)) + return 1; + obuf->flag &= ~RB_TITLE; + obuf->end_tag = 0; + tmp = process_n_title(tag); + if (tmp) + HTMLlineproc1(tmp->ptr, h_env); + } return 1; case HTML_TITLE_ALT: if (parsedtag_get_value(tag, ATTR_TITLE, &p)) @@ -5524,9 +5528,13 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env) } } case HTML_N_HEAD: + obuf->flag &= ~RB_HEAD; if (obuf->flag & RB_TITLE) HTMLlineproc1("", h_env); + return 1; case HTML_HEAD: + obuf->flag |= RB_HEAD; + return 1; case HTML_N_BODY: return 1; default: diff --git a/fm.h b/fm.h index 5391ea9..59ecc62 100644 --- a/fm.h +++ b/fm.h @@ -675,6 +675,7 @@ struct readbuffer { #define RB_DEL 0x100000 #define RB_S 0x200000 #define RB_HTML5 0x400000 +#define RB_HEAD 0x800000 #define RB_GET_ALIGN(obuf) ((obuf)->flag&RB_ALIGN) #define RB_SET_ALIGN(obuf,align) do{(obuf)->flag &= ~RB_ALIGN; (obuf)->flag |= (align); }while(0)