1 long (*extfunc)();
2
lstrcpynW(short * d,const short * s,int n)3 static inline void lstrcpynW( short *d, const short *s, int n )
4 {
5 unsigned int count = n;
6
7 while ((count > 1) && *s)
8 {
9 count--;
10 *d++ = *s++;
11 }
12 if (count) *d = 0;
13 }
14
15 int __attribute__((noinline,noclone))
badfunc(int u0,int u1,int u2,int u3,short * fsname,unsigned int fsname_len)16 badfunc(int u0, int u1, int u2, int u3,
17 short *fsname, unsigned int fsname_len)
18 {
19 static const short ntfsW[] = {'N','T','F','S',0};
20 char superblock[2048+3300];
21 int ret = 0;
22 short *p;
23
24 if (extfunc())
25 return 0;
26 p = (void *)extfunc();
27 if (p != 0)
28 goto done;
29
30 extfunc(superblock);
31
32 lstrcpynW(fsname, ntfsW, fsname_len);
33
34 ret = 1;
35 done:
36 return ret;
37 }
38
f()39 static long f()
40 {
41 return 0;
42 }
43
main()44 int main()
45 {
46 short buf[6];
47 extfunc = f;
48 return !badfunc(0, 0, 0, 0, buf, 6);
49 }
50