1*4882a593SmuzhiyunFrom 5b6641978e8fa68bca05d224a61f8513b010eda8 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Coleman <omegacoleman@gmail.com>
3*4882a593SmuzhiyunDate: Fri, 17 Jul 2020 08:53:00 +0800
4*4882a593SmuzhiyunSubject: [PATCH] Fix using sprintf for extending string, which causes
5*4882a593Smuzhiyun undefined behavior
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun[Upstream: https://github.com/abperiasamy/rtl8812AU_8821AU_linux/commit/be57045a0933d64e958878696883e9cf998e1bf3.patch]
8*4882a593SmuzhiyunSigned-off-by: Coleman <omegacoleman@gmail.com>
9*4882a593SmuzhiyunSigned-off-by: Christian Stewart <christian@paral.in>
10*4882a593Smuzhiyun---
11*4882a593Smuzhiyun core/rtw_mp.c              |   2 +-
12*4882a593Smuzhiyun os_dep/linux/ioctl_linux.c | 108 ++++++++++++++++++-------------------
13*4882a593Smuzhiyun 2 files changed, 55 insertions(+), 55 deletions(-)
14*4882a593Smuzhiyun
15*4882a593Smuzhiyundiff --git a/core/rtw_mp.c b/core/rtw_mp.c
16*4882a593Smuzhiyunindex c2e400d..989bb3e 100644
17*4882a593Smuzhiyun--- a/core/rtw_mp.c
18*4882a593Smuzhiyun+++ b/core/rtw_mp.c
19*4882a593Smuzhiyun@@ -1871,7 +1871,7 @@ u32 mp_query_psd(PADAPTER pAdapter, u8 *data)
20*4882a593Smuzhiyun 		} else {
21*4882a593Smuzhiyun 			psd_data = rtw_GetPSDData(pAdapter, i);
22*4882a593Smuzhiyun 		}
23*4882a593Smuzhiyun-		sprintf(data, "%s%x ", data, psd_data);
24*4882a593Smuzhiyun+		sprintf(data + strlen(data), "%x ", psd_data);
25*4882a593Smuzhiyun 		i++;
26*4882a593Smuzhiyun 	}
27*4882a593Smuzhiyun
28*4882a593Smuzhiyundiff --git a/os_dep/linux/ioctl_linux.c b/os_dep/linux/ioctl_linux.c
29*4882a593Smuzhiyunindex c74a153..9543fa3 100644
30*4882a593Smuzhiyun--- a/os_dep/linux/ioctl_linux.c
31*4882a593Smuzhiyun+++ b/os_dep/linux/ioctl_linux.c
32*4882a593Smuzhiyun@@ -9080,19 +9080,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,
33*4882a593Smuzhiyun 		sprintf(extra, "\n");
34*4882a593Smuzhiyun 		for (i = 0; i < EFUSE_MAP_SIZE; i += 16) {
35*4882a593Smuzhiyun //			DBG_871X("0x%02x\t", i);
36*4882a593Smuzhiyun-			sprintf(extra, "%s0x%02x\t", extra, i);
37*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "0x%02x\t", i);
38*4882a593Smuzhiyun 			for (j=0; j<8; j++) {
39*4882a593Smuzhiyun //				DBG_871X("%02X ", data[i+j]);
40*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, PROMContent[i+j]);
41*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", PROMContent[i+j]);
42*4882a593Smuzhiyun 			}
43*4882a593Smuzhiyun //			DBG_871X("\t");
44*4882a593Smuzhiyun-			sprintf(extra, "%s\t", extra);
45*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\t");
46*4882a593Smuzhiyun 			for (; j<16; j++) {
47*4882a593Smuzhiyun //				DBG_871X("%02X ", data[i+j]);
48*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, PROMContent[i+j]);
49*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", PROMContent[i+j]);
50*4882a593Smuzhiyun 			}
51*4882a593Smuzhiyun //			DBG_871X("\n");
52*4882a593Smuzhiyun-			sprintf(extra,"%s\n",extra);
53*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\n");
54*4882a593Smuzhiyun 		}
55*4882a593Smuzhiyun //		DBG_871X("\n");
56*4882a593Smuzhiyun 	} else if (strcmp(tmp[0], "realmap") == 0) {
57*4882a593Smuzhiyun@@ -9107,19 +9107,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,
58*4882a593Smuzhiyun 		sprintf(extra, "\n");
59*4882a593Smuzhiyun 		for (i = 0; i < EFUSE_MAP_SIZE; i += 16) {
60*4882a593Smuzhiyun //			DBG_871X("0x%02x\t", i);
61*4882a593Smuzhiyun-			sprintf(extra, "%s0x%02x\t", extra, i);
62*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "0x%02x\t", i);
63*4882a593Smuzhiyun 			for (j=0; j<8; j++) {
64*4882a593Smuzhiyun //				DBG_871X("%02X ", data[i+j]);
65*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, pEfuseHal->fakeEfuseInitMap[i+j]);
66*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", pEfuseHal->fakeEfuseInitMap[i+j]);
67*4882a593Smuzhiyun 			}
68*4882a593Smuzhiyun //			DBG_871X("\t");
69*4882a593Smuzhiyun-			sprintf(extra, "%s\t", extra);
70*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\t");
71*4882a593Smuzhiyun 			for (; j<16; j++) {
72*4882a593Smuzhiyun //				DBG_871X("%02X ", data[i+j]);
73*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, pEfuseHal->fakeEfuseInitMap[i+j]);
74*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", pEfuseHal->fakeEfuseInitMap[i+j]);
75*4882a593Smuzhiyun 			}
76*4882a593Smuzhiyun //			DBG_871X("\n");
77*4882a593Smuzhiyun-			sprintf(extra,"%s\n",extra);
78*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\n");
79*4882a593Smuzhiyun 		}
80*4882a593Smuzhiyun //		DBG_871X("\n");
81*4882a593Smuzhiyun 	} else if (strcmp(tmp[0], "rmap") == 0) {
82*4882a593Smuzhiyun@@ -9158,7 +9158,7 @@ static int rtw_mp_efuse_get(struct net_device *dev,
83*4882a593Smuzhiyun 		*extra = 0;
84*4882a593Smuzhiyun 		for (i=0; i<cnts; i++) {
85*4882a593Smuzhiyun //			DBG_871X("0x%02x ", data[i]);
86*4882a593Smuzhiyun-			sprintf(extra, "%s0x%02X ", extra, data[i]);
87*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "0x%02X ", data[i]);
88*4882a593Smuzhiyun 		}
89*4882a593Smuzhiyun //		DBG_871X("}\n");
90*4882a593Smuzhiyun 	} else if (strcmp(tmp[0], "realraw") == 0) {
91*4882a593Smuzhiyun@@ -9174,17 +9174,17 @@ static int rtw_mp_efuse_get(struct net_device *dev,
92*4882a593Smuzhiyun 		sprintf(extra, "\n0x00\t");
93*4882a593Smuzhiyun 		for (i=0; i< mapLen; i++) {
94*4882a593Smuzhiyun 			//			DBG_871X("%02X", rawdata[i]);
95*4882a593Smuzhiyun-			sprintf(extra, "%s%02X", extra, rawdata[i]);
96*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "%02X", rawdata[i]);
97*4882a593Smuzhiyun 			if ((i & 0xF) == 0xF) {
98*4882a593Smuzhiyun 				//				DBG_871X("\n");
99*4882a593Smuzhiyun-				sprintf(extra, "%s\n", extra);
100*4882a593Smuzhiyun-				sprintf(extra, "%s0x%02x\t", extra, i+1);
101*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "\n");
102*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "0x%02x\t", i+1);
103*4882a593Smuzhiyun 			} else if ((i & 0x7) == 0x7) {
104*4882a593Smuzhiyun 				//				DBG_871X("\t");
105*4882a593Smuzhiyun-				sprintf(extra, "%s \t", extra);
106*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), " \t");
107*4882a593Smuzhiyun 			} else {
108*4882a593Smuzhiyun 				//				DBG_871X(" ");
109*4882a593Smuzhiyun-				sprintf(extra, "%s ", extra);
110*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), " ");
111*4882a593Smuzhiyun 			}
112*4882a593Smuzhiyun 		}
113*4882a593Smuzhiyun 		//		DBG_871X("}\n");
114*4882a593Smuzhiyun@@ -9269,10 +9269,10 @@ static int rtw_mp_efuse_get(struct net_device *dev,
115*4882a593Smuzhiyun 		*extra = 0;
116*4882a593Smuzhiyun 		for (i=0; i<cnts; i++) {
117*4882a593Smuzhiyun //			DBG_871X("%02X", data[i]);
118*4882a593Smuzhiyun-			sprintf(extra, "%s%02X", extra, data[i]);
119*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "%02X", data[i]);
120*4882a593Smuzhiyun 			if (i != (cnts-1)) {
121*4882a593Smuzhiyun //				DBG_871X(":");
122*4882a593Smuzhiyun-				sprintf(extra,"%s:",extra);
123*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), ":");
124*4882a593Smuzhiyun 			}
125*4882a593Smuzhiyun 		}
126*4882a593Smuzhiyun //		DBG_871X("}\n");
127*4882a593Smuzhiyun@@ -9330,10 +9330,10 @@ static int rtw_mp_efuse_get(struct net_device *dev,
128*4882a593Smuzhiyun 		*extra = 0;
129*4882a593Smuzhiyun 		for (i=0; i<cnts; i++) {
130*4882a593Smuzhiyun //			DBG_871X("0x%02x", data[i]);
131*4882a593Smuzhiyun-			sprintf(extra, "%s0x%02X", extra, data[i]);
132*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "0x%02X", data[i]);
133*4882a593Smuzhiyun 			if (i != (cnts-1)) {
134*4882a593Smuzhiyun //				DBG_871X(",");
135*4882a593Smuzhiyun-				sprintf(extra,"%s,",extra);
136*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), ",");
137*4882a593Smuzhiyun 			}
138*4882a593Smuzhiyun 		}
139*4882a593Smuzhiyun //		DBG_871X("}\n");
140*4882a593Smuzhiyun@@ -9355,19 +9355,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,
141*4882a593Smuzhiyun 		sprintf(extra, "\n");
142*4882a593Smuzhiyun 		for (i=0; i<512; i+=16) { // set 512 because the iwpriv's extra size have limit 0x7FF
143*4882a593Smuzhiyun //			DBG_871X("0x%03x\t", i);
144*4882a593Smuzhiyun-			sprintf(extra, "%s0x%03x\t", extra, i);
145*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "0x%03x\t", i);
146*4882a593Smuzhiyun 			for (j=0; j<8; j++) {
147*4882a593Smuzhiyun //				DBG_871X("%02X ", pEfuseHal->BTEfuseInitMap[i+j]);
148*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, pEfuseHal->BTEfuseInitMap[i+j]);
149*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", pEfuseHal->BTEfuseInitMap[i+j]);
150*4882a593Smuzhiyun 			}
151*4882a593Smuzhiyun //			DBG_871X("\t");
152*4882a593Smuzhiyun-			sprintf(extra,"%s\t",extra);
153*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\t");
154*4882a593Smuzhiyun 			for (; j<16; j++) {
155*4882a593Smuzhiyun //				DBG_871X("%02X ", pEfuseHal->BTEfuseInitMap[i+j]);
156*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, pEfuseHal->BTEfuseInitMap[i+j]);
157*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", pEfuseHal->BTEfuseInitMap[i+j]);
158*4882a593Smuzhiyun 			}
159*4882a593Smuzhiyun //			DBG_871X("\n");
160*4882a593Smuzhiyun-			sprintf(extra, "%s\n", extra);
161*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\n");
162*4882a593Smuzhiyun 		}
163*4882a593Smuzhiyun //		DBG_871X("\n");
164*4882a593Smuzhiyun 	} else if (strcmp(tmp[0],"btbmap") == 0) {
165*4882a593Smuzhiyun@@ -9384,19 +9384,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,
166*4882a593Smuzhiyun 		sprintf(extra, "\n");
167*4882a593Smuzhiyun 		for (i=512; i<1024 ; i+=16) {
168*4882a593Smuzhiyun //			DBG_871X("0x%03x\t", i);
169*4882a593Smuzhiyun-			sprintf(extra, "%s0x%03x\t", extra, i);
170*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "0x%03x\t", i);
171*4882a593Smuzhiyun 			for (j=0; j<8; j++) {
172*4882a593Smuzhiyun //				DBG_871X("%02X ", data[i+j]);
173*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, pEfuseHal->BTEfuseInitMap[i+j]);
174*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", pEfuseHal->BTEfuseInitMap[i+j]);
175*4882a593Smuzhiyun 			}
176*4882a593Smuzhiyun //			DBG_871X("\t");
177*4882a593Smuzhiyun-			sprintf(extra,"%s\t",extra);
178*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\t");
179*4882a593Smuzhiyun 			for (; j<16; j++) {
180*4882a593Smuzhiyun //				DBG_871X("%02X ", data[i+j]);
181*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, pEfuseHal->BTEfuseInitMap[i+j]);
182*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", pEfuseHal->BTEfuseInitMap[i+j]);
183*4882a593Smuzhiyun 			}
184*4882a593Smuzhiyun //			DBG_871X("\n");
185*4882a593Smuzhiyun-			sprintf(extra, "%s\n", extra);
186*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\n");
187*4882a593Smuzhiyun 		}
188*4882a593Smuzhiyun //		DBG_871X("\n");
189*4882a593Smuzhiyun 	} else if (strcmp(tmp[0],"btrmap") == 0) {
190*4882a593Smuzhiyun@@ -9436,7 +9436,7 @@ static int rtw_mp_efuse_get(struct net_device *dev,
191*4882a593Smuzhiyun //		DBG_871X("%s: bt efuse data={", __FUNCTION__);
192*4882a593Smuzhiyun 		for (i=0; i<cnts; i++) {
193*4882a593Smuzhiyun //			DBG_871X("0x%02x ", data[i]);
194*4882a593Smuzhiyun-			sprintf(extra, "%s 0x%02X ", extra, data[i]);
195*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), " 0x%02X ", data[i]);
196*4882a593Smuzhiyun 		}
197*4882a593Smuzhiyun //		DBG_871X("}\n");
198*4882a593Smuzhiyun 		DBG_871X(FUNC_ADPT_FMT ": BT MAC=[%s]\n", FUNC_ADPT_ARG(padapter), extra);
199*4882a593Smuzhiyun@@ -9445,19 +9445,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,
200*4882a593Smuzhiyun 		sprintf(extra, "\n");
201*4882a593Smuzhiyun 		for (i=0; i<512; i+=16) {
202*4882a593Smuzhiyun //			DBG_871X("0x%03x\t", i);
203*4882a593Smuzhiyun-			sprintf(extra, "%s0x%03x\t", extra, i);
204*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "0x%03x\t", i);
205*4882a593Smuzhiyun 			for (j=0; j<8; j++) {
206*4882a593Smuzhiyun //				DBG_871X("%02X ", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
207*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
208*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
209*4882a593Smuzhiyun 			}
210*4882a593Smuzhiyun //			DBG_871X("\t");
211*4882a593Smuzhiyun-			sprintf(extra, "%s\t", extra);
212*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\t");
213*4882a593Smuzhiyun 			for (; j<16; j++) {
214*4882a593Smuzhiyun //				DBG_871X("%02X ", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
215*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
216*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
217*4882a593Smuzhiyun 			}
218*4882a593Smuzhiyun //			DBG_871X("\n");
219*4882a593Smuzhiyun-			sprintf(extra, "%s\n", extra);
220*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\n");
221*4882a593Smuzhiyun 		}
222*4882a593Smuzhiyun //		DBG_871X("\n");
223*4882a593Smuzhiyun 	} else if (strcmp(tmp[0],"btbfake") == 0) {
224*4882a593Smuzhiyun@@ -9465,19 +9465,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,
225*4882a593Smuzhiyun 		sprintf(extra, "\n");
226*4882a593Smuzhiyun 		for (i=512; i<1024; i+=16) {
227*4882a593Smuzhiyun //			DBG_871X("0x%03x\t", i);
228*4882a593Smuzhiyun-			sprintf(extra, "%s0x%03x\t", extra, i);
229*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "0x%03x\t", i);
230*4882a593Smuzhiyun 			for (j=0; j<8; j++) {
231*4882a593Smuzhiyun //				DBG_871X("%02X ", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
232*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
233*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
234*4882a593Smuzhiyun 			}
235*4882a593Smuzhiyun //			DBG_871X("\t");
236*4882a593Smuzhiyun-			sprintf(extra, "%s\t", extra);
237*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\t");
238*4882a593Smuzhiyun 			for (; j<16; j++) {
239*4882a593Smuzhiyun //				DBG_871X("%02X ", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
240*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
241*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);
242*4882a593Smuzhiyun 			}
243*4882a593Smuzhiyun //			DBG_871X("\n");
244*4882a593Smuzhiyun-			sprintf(extra, "%s\n", extra);
245*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\n");
246*4882a593Smuzhiyun 		}
247*4882a593Smuzhiyun //		DBG_871X("\n");
248*4882a593Smuzhiyun 	} else if (strcmp(tmp[0],"wlrfkmap")== 0) {
249*4882a593Smuzhiyun@@ -9485,19 +9485,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,
250*4882a593Smuzhiyun 		sprintf(extra, "\n");
251*4882a593Smuzhiyun 		for (i=0; i<EFUSE_MAP_SIZE; i+=16) {
252*4882a593Smuzhiyun //			DBG_871X("\t0x%02x\t", i);
253*4882a593Smuzhiyun-			sprintf(extra, "%s0x%02x\t", extra, i);
254*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "0x%02x\t", i);
255*4882a593Smuzhiyun 			for (j=0; j<8; j++) {
256*4882a593Smuzhiyun //				DBG_871X("%02X ", pEfuseHal->fakeEfuseModifiedMap[i+j]);
257*4882a593Smuzhiyun-				sprintf(extra, "%s%02X ", extra, pEfuseHal->fakeEfuseModifiedMap[i+j]);
258*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), "%02X ", pEfuseHal->fakeEfuseModifiedMap[i+j]);
259*4882a593Smuzhiyun 			}
260*4882a593Smuzhiyun //			DBG_871X("\t");
261*4882a593Smuzhiyun-			sprintf(extra, "%s\t", extra);
262*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\t");
263*4882a593Smuzhiyun 			for (; j<16; j++) {
264*4882a593Smuzhiyun //				DBG_871X("%02X ", pEfuseHal->fakeEfuseModifiedMap[i+j]);
265*4882a593Smuzhiyun-				sprintf(extra, "%s %02X", extra, pEfuseHal->fakeEfuseModifiedMap[i+j]);
266*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), " %02X", pEfuseHal->fakeEfuseModifiedMap[i+j]);
267*4882a593Smuzhiyun 			}
268*4882a593Smuzhiyun //			DBG_871X("\n");
269*4882a593Smuzhiyun-			sprintf(extra, "%s\n", extra);
270*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "\n");
271*4882a593Smuzhiyun 		}
272*4882a593Smuzhiyun //		DBG_871X("\n");
273*4882a593Smuzhiyun
274*4882a593Smuzhiyun@@ -9523,7 +9523,7 @@ static int rtw_mp_efuse_get(struct net_device *dev,
275*4882a593Smuzhiyun 		*extra = 0;
276*4882a593Smuzhiyun 		for (i=0; i<cnts; i++) {
277*4882a593Smuzhiyun 			DBG_871X("wlrfkrmap = 0x%02x \n", pEfuseHal->fakeEfuseModifiedMap[addr+i]);
278*4882a593Smuzhiyun-			sprintf(extra, "%s0x%02X ", extra, pEfuseHal->fakeEfuseModifiedMap[addr+i]);
279*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "0x%02X ", pEfuseHal->fakeEfuseModifiedMap[addr+i]);
280*4882a593Smuzhiyun 		}
281*4882a593Smuzhiyun 	} else if (strcmp(tmp[0],"btrfkrmap")== 0) {
282*4882a593Smuzhiyun 		if ((tmp[1]==NULL) || (tmp[2]==NULL)) {
283*4882a593Smuzhiyun@@ -9547,7 +9547,7 @@ static int rtw_mp_efuse_get(struct net_device *dev,
284*4882a593Smuzhiyun 		*extra = 0;
285*4882a593Smuzhiyun 		for (i=0; i<cnts; i++) {
286*4882a593Smuzhiyun 			DBG_871X("wlrfkrmap = 0x%02x \n", pEfuseHal->fakeBTEfuseModifiedMap[addr+i]);
287*4882a593Smuzhiyun-			sprintf(extra, "%s0x%02X ", extra, pEfuseHal->fakeBTEfuseModifiedMap[addr+i]);
288*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), "0x%02X ", pEfuseHal->fakeBTEfuseModifiedMap[addr+i]);
289*4882a593Smuzhiyun 		}
290*4882a593Smuzhiyun 	} else {
291*4882a593Smuzhiyun 		sprintf(extra, "Command not found!");
292*4882a593Smuzhiyun@@ -10409,7 +10409,7 @@ static int rtw_mp_read_reg(struct net_device *dev,
293*4882a593Smuzhiyun 			pnext++;
294*4882a593Smuzhiyun 			if ( *pnext != '\0' ) {
295*4882a593Smuzhiyun 				strtout = simple_strtoul (pnext , &ptmp, 16);
296*4882a593Smuzhiyun-				sprintf( extra, "%s %d" ,extra ,strtout );
297*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), " %d"  ,strtout );
298*4882a593Smuzhiyun 			} else {
299*4882a593Smuzhiyun 				break;
300*4882a593Smuzhiyun 			}
301*4882a593Smuzhiyun@@ -10443,7 +10443,7 @@ static int rtw_mp_read_reg(struct net_device *dev,
302*4882a593Smuzhiyun 			pnext++;
303*4882a593Smuzhiyun 			if ( *pnext != '\0' ) {
304*4882a593Smuzhiyun 				strtout = simple_strtoul (pnext , &ptmp, 16);
305*4882a593Smuzhiyun-				sprintf( extra, "%s %d" ,extra ,strtout );
306*4882a593Smuzhiyun+				sprintf(extra + strlen(extra), " %d"  ,strtout );
307*4882a593Smuzhiyun 			} else {
308*4882a593Smuzhiyun 				break;
309*4882a593Smuzhiyun 			}
310*4882a593Smuzhiyun@@ -10566,7 +10566,7 @@ static int rtw_mp_read_rf(struct net_device *dev,
311*4882a593Smuzhiyun 		pnext++;
312*4882a593Smuzhiyun 		if ( *pnext != '\0' ) {
313*4882a593Smuzhiyun 			strtou = simple_strtoul (pnext , &ptmp, 16);
314*4882a593Smuzhiyun-			sprintf( extra, "%s %d" ,extra ,strtou );
315*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), " %d"  ,strtou );
316*4882a593Smuzhiyun 		} else {
317*4882a593Smuzhiyun 			break;
318*4882a593Smuzhiyun 		}
319*4882a593Smuzhiyun@@ -12155,14 +12155,14 @@ todo:
320*4882a593Smuzhiyun 				goto exit;
321*4882a593Smuzhiyun
322*4882a593Smuzhiyun #ifdef CONFIG_RTL8723A
323*4882a593Smuzhiyun-			sprintf(extra, "%s %d ", extra, (pMptCtx->mptOutBuf[i]& 0x3f));
324*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), " %d ", (pMptCtx->mptOutBuf[i]& 0x3f));
325*4882a593Smuzhiyun #else
326*4882a593Smuzhiyun-			sprintf(extra, "%s %d ", extra, (pMptCtx->mptOutBuf[i]& 0x1f));
327*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), " %d ", (pMptCtx->mptOutBuf[i]& 0x1f));
328*4882a593Smuzhiyun #endif
329*4882a593Smuzhiyun 		}
330*4882a593Smuzhiyun 	} else {
331*4882a593Smuzhiyun 		for (i=4; i<pMptCtx->mptOutLen; i++) {
332*4882a593Smuzhiyun-			sprintf(extra, "%s 0x%x ", extra, pMptCtx->mptOutBuf[i]);
333*4882a593Smuzhiyun+			sprintf(extra + strlen(extra), " 0x%x ", pMptCtx->mptOutBuf[i]);
334*4882a593Smuzhiyun 		}
335*4882a593Smuzhiyun 	}
336*4882a593Smuzhiyun
337*4882a593Smuzhiyun--
338*4882a593Smuzhiyun2.28.0
339*4882a593Smuzhiyun
340