[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 0/2] tools/symbols: fix oversized names and token expansion


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Mykola Kvach <mykola_kvach@xxxxxxxx>
  • Date: Wed, 7 Oct 2026 21:11:01 +0300
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kHdT48kq+wT7uC4uuIfGYnDjzFbwLpZbUDog5uvLSF4=; b=rOFocPLFNhk6V/zuL8gkqkpXJQCLC7+dmOpcYSLPH7ScVZAfYuP+pWXeRADDgmGS5ynVBqHUAutvqV28NYSZUpcMMnxqNX7H3jzqldD+tbzOmQcfrW3kmEeIep8tc2d6BnNCgz4IbmmyBMLeE3MVncvL/gT8NVKXLCtKbp+nJmniAUHPWhLVUFHyVmdDdVOWFM7TyoBq9mKsSI0G/coiuSayuKqO0+WlQG9FKuFzbVy7tAPRZHx7qphod58HBBMOkxp1v3ejpJbIjeaeHLr7+5F2Oz2zAXgfdxaqr2LcE/UHuiMCR5EkyUBl3GGtlA5pbzw0V22Fg4MVaO+XGWQIKw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KTikAHlXg4PIJbquW7aPk29t4tAuqKfY/wj7cIRT41ZUZ1bbVaBQZ4CCgSTEiqiJ8UiCIHgM/wNElGQ+ycODX4Gc2OXSks3YT+Es1on+79GSsby2+R9AwhhgAEcs2cC1Icn2gosz4Dv2CiwHr8dn5VVbRspG79XpEZ21RU3zwST9JLVbPLEV0ZkO9vPHmqnV5IwiX3k699HsrmBWWPyHxhIe/xkCzusDEqfaovReaFM3Hwe+MlFMXMJJfRs4ySN8WweodENdDRuvo2G33fOGEierNE+uiak5pTKgrhmZAZkKqZ3R/X+1daC1MAaAF7GkXv6irOmIn0fmSSkMg78xaQ==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com;
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, Roger Pau Monné <roger@xxxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>
  • Delivery-date: Wed, 07 Oct 2026 18:11:23 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Hi all,

This short series fixes two bugs in the build-time symbol table
generator (xen/tools/symbols). Both are host tool bugs; the runtime
code is not changed.

At runtime, symbol names are expanded into buffers of KSYM_NAME_LEN + 1
bytes (128). The generator did not check that the names it puts into the
table fit into these buffers.

Patch 1 fixes the first bug. In SYSV input, local symbols are prefixed
with the source file name ("filename#symbol"). A long absolute build
path can therefore create a name longer than 127 bytes, even when the
symbol itself is short. A debug Xen build on an Orange Pi 5 (RK3588S)
crashed during the boot self-tests: symbols_lookup_by_name() expanded
such a name into its 128-byte buffer and overwrote the saved frame
pointer and return address. The patch rejects retained names longer than
KSYM_NAME_LEN during the build and prints the offending name.
Readable --xensyms maps are not restricted. Nothing changes for names
of at most 127 bytes.

A build from a long absolute source path can now fail at link time.
On x86, in-tree builds use relative paths and are not affected. An
out-of-tree build with the default config fails if the absolute path of
xen/ is longer than 78 bytes; the longest such name is
kexec_reloc.S#compatibility_mode.

Patch 2 fixes the second bug. In the compressed stream, each symbol is
stored as [type][name]. A compression token can therefore expand to
the type byte plus a full 127-byte name (128 bytes), and write_src()
adds a terminating NUL. Its local buffer was 128 bytes, one byte too
small. The patch allocates KSYM_NAME_LEN + 2 bytes (type + name +
NUL). This bug can trigger with fully valid names, but only with a very
small symbol table; real symbol tables do not hit it. The new size
relies on the name limit from patch 1.

Mykola Kvach (2):
  tools/symbols: reject names exceeding the runtime limit
  tools/symbols: leave room for the type byte and NUL when expanding
    tokens

 xen/tools/symbols.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

-- 
2.53.0



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.