~ubuntu-branches/ubuntu/oneiric/libotr/oneiric-security

« back to all changes in this revision

Viewing changes to src/mem.c

  • Committer: Bazaar Package Importer
  • Author(s): Thibaut VARENE
  • Date: 2006-01-02 19:52:18 UTC
  • mfrom: (2.1.1 dapper)
  • Revision ID: james.westby@ubuntu.com-20060102195218-wb8803196y9mycx6
Tags: 3.0.0-2
Fix typo: "malformed messahes" (Closes: #345400)

Show diffs side-by-side

added added

removed removed

Lines of Context:
63
63
    ((size_t *)p)[1] = OTRL_MEM_MAGIC;
64
64
#endif
65
65
 
66
 
    return (p + header_size);
 
66
    return (void *)((char *)p + header_size);
67
67
}
68
68
 
69
69
static int otrl_mem_is_secure(const void *p)
73
73
 
74
74
static void otrl_mem_free(void *p)
75
75
{
76
 
    void *real_p = p - header_size;
 
76
    void *real_p = (void *)((char *)p - header_size);
77
77
    size_t n = ((size_t *)real_p)[0];
78
78
#ifdef OTRL_MEM_MAGIC
79
79
    if (((size_t *)real_p)[1] != OTRL_MEM_MAGIC) {
100
100
        otrl_mem_free(p);
101
101
        return NULL;
102
102
    } else {
103
 
        void *real_p = p - header_size;
 
103
        void *real_p = (void *)((char *)p - header_size);
104
104
        void *new_p;
105
105
        size_t old_n = ((size_t *)real_p)[0];
106
106
#ifdef OTRL_MEM_MAGIC
121
121
 
122
122
        if (new_n < old_n) {
123
123
            /* Overwrite the space we're about to stop using */
124
 
            void *p = real_p + new_n;
 
124
            void *p = (void *)((char *)real_p + new_n);
125
125
            size_t excess = old_n - new_n;
126
126
            memset(p, 0xff, excess);
127
127
            memset(p, 0xaa, excess);
136
136
        }
137
137
 
138
138
        ((size_t *)new_p)[0] = new_n;  /* Includes header size */
139
 
        return (new_p + header_size);
 
139
        return (void *)((char *)new_p + header_size);
140
140
    }
141
141
}
142
142