~ubuntu-branches/ubuntu/maverick/avr-libc/maverick

« back to all changes in this revision

Viewing changes to tests/simulate/regression/bug-22800.c

  • Committer: Bazaar Package Importer
  • Author(s): Hakan Ardo
  • Date: 2009-10-31 11:52:10 UTC
  • mfrom: (1.2.2 upstream)
  • mto: This revision was merged to the branch mainline in revision 10.
  • Revision ID: james.westby@ubuntu.com-20091031115210-crjd42sn6ezrj52c
* New upstream relese (closes: #544030)
* Added lintian overrides (closes: #553265)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* bug #22800: sprintf() expands a 128char string parameter incorrectly
2
 
   $Id: bug-22800.c,v 1.1.2.2 2008/04/03 11:19:52 dmix Exp $
3
 
   
4
 
   This bug is marked as INVALID.  It is take place with avr-libc 1.4 only,
5
 
   which is not supported now.  Avr-libc 1.6 is correct.
6
 
 */
7
 
 
8
 
#include <stdio.h>
9
 
#include <string.h>
10
 
 
11
 
#ifndef __AVR__
12
 
# define strcmp_P       strcmp
13
 
# define PSTR(s)        (s)
14
 
#else
15
 
# include <avr/pgmspace.h>
16
 
#endif
17
 
 
18
 
 
19
 
char buffer[210], string[200];
20
 
char tmp[] = "123";
21
 
 
22
 
int main ()
23
 
{
24
 
    int i;
25
 
 
26
 
    /* This is the bug report code.     */
27
 
    for (i = 0; i < 129; i++)
28
 
        string[i] = 'B';
29
 
    sprintf (buffer, "%s%s", string, tmp);
30
 
    
31
 
    if (strcmp_P (buffer, PSTR ("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"  /* 32*B */
32
 
                                "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"  /* 32*B */
33
 
                                "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"  /* 32*B */
34
 
                                "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"  /* 32*B */
35
 
                                "B123")))
36
 
    {
37
 
        return __LINE__;
38
 
    }
39
 
 
40
 
#if     !defined(__AVR__) || (RAMEND >= 0x45F)
41
 
    /* Check the size > 255.    */
42
 
    {
43
 
        char s[260];
44
 
        char t[sizeof(s)];
45
 
 
46
 
        memset (s, 'A', sizeof(s));
47
 
        s[sizeof(s) - 1] = 0;
48
 
        memset (t, 'B', sizeof(t));
49
 
        sprintf (t, "%s", s);
50
 
        
51
 
        if (strcmp (s, t)) return __LINE__;
52
 
    }
53
 
#endif
54
 
    
55
 
    return 0;
56
 
}