1long (*extfunc)();
2
3static 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
15int __attribute__((noinline,noclone))
16badfunc(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;
35done:
36    return ret;
37}
38
39static long f()
40{
41    return 0;
42}
43
44int main()
45{
46    short buf[6];
47    extfunc = f;
48    return !badfunc(0, 0, 0, 0, buf, 6);
49}
50