File libnpclient-noinline-npc_gets.patch of Package diod

From 600c3c3002bb3e2c1a6516943486eb94fe62d9f5 Mon Sep 17 00:00:00 2001
From: David Disseldorp <ddiss@suse.de>
Date: Wed, 31 Dec 2025 13:07:12 +0100
Subject: [PATCH] libnpclient: noinline npc_gets

gcc-15 Factory builds are failing with:
[   20s] In function 'npc_gets',
[   20s]     inlined from 'cmd_showmount' at diodcli.c:496:12:
[   20s] ../libnpclient/read.c:218:19: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
[   20s]   218 |         buf[done] = '\0';
[   20s]       |                   ^
[   20s] diodcli.c: In function 'cmd_showmount':
[   20s] diodcli.c:465:10: note: at offset [-2147483648, -1] into destination object 'buf' of size 80
[   20s]   465 |     char buf[80], *host, *p;
[   20s]       |          ^
[   21s] lto1: all warnings being treated as errors

I've taken a quick look, and don't think that 'done' can cause a 'buf'
overrun here, but I may be wrong (the code is pretty hairy).

Attempt to workaround the compiler error by avoiding npc_gets inlining.
---
 src/libnpclient/read.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/libnpclient/read.c b/src/libnpclient/read.c
index cbc78bc..e94ef09 100644
--- a/src/libnpclient/read.c
+++ b/src/libnpclient/read.c
@@ -190,7 +190,7 @@ _strnchr (char *s, char c, int len)
 	return NULL;
 }
 
-char *
+char * __attribute__ ((noinline))
 npc_gets(Npcfid *fid, char *buf, u32 count)
 {
 	int n = 0, done = 0, extra = 0;
-- 
2.52.0

openSUSE Build Service is sponsored by