Author: vangyzen Date: Mon Oct 26 16:42:53 2020 New Revision: 367059 URL: https://svnweb.freebsd.org/changeset/base/367059
Log: db_search_symbol: prevent pollution from bogus symbols The kernel will never map the first page, so any symbols in that range cannot refer to addresses. Some third-party assembly files define internal constants which appear in their symbol table. Avoiding the lookup for those symbols avoids replacing small offsets with those symbols during disassembly. Reported by: Anton Rang <rang%acm.org> Reviewed by: Anton Rang <rang%acm.org>, markj MFC after: 2 weeks Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D26895 Modified: head/sys/ddb/db_sym.c Modified: head/sys/ddb/db_sym.c ============================================================================== --- head/sys/ddb/db_sym.c Mon Oct 26 13:24:20 2020 (r367058) +++ head/sys/ddb/db_sym.c Mon Oct 26 16:42:53 2020 (r367059) @@ -371,8 +371,21 @@ db_search_symbol(db_addr_t val, db_strategy_t strategy unsigned int diff; size_t newdiff; int i; - c_db_sym_t ret = C_DB_SYM_NULL, sym; + c_db_sym_t ret, sym; + /* + * The kernel will never map the first page, so any symbols in that + * range cannot refer to addresses. Some third-party assembly files + * define internal constants which appear in their symbol table. + * Avoiding the lookup for those symbols avoids replacing small offsets + * with those symbols during disassembly. + */ + if (val < PAGE_SIZE) { + *offp = 0; + return (C_DB_SYM_NULL); + } + + ret = C_DB_SYM_NULL; newdiff = diff = val; for (i = 0; i < db_nsymtab; i++) { sym = X_db_search_symbol(&db_symtabs[i], val, strategy, &newdiff); _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"