~ubuntu-branches/ubuntu/precise/mesa/precise-security

« back to all changes in this revision

Viewing changes to src/gallium/auxiliary/util/u_double_list.h

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers, Steve Beattie
  • Date: 2012-10-19 09:04:04 UTC
  • mfrom: (163.1.4 precise-proposed)
  • Revision ID: package-import@ubuntu.com-20121019090404-5zbjpsp6knv7zl3b
Tags: 8.0.4-0ubuntu0.2
[ Steve Beattie ]
* SECURITY UPDATE: samplers array overflow (LP: #1046933)
  - debian/patches/50-CVE-2012-2864.patch: ensure that more than
    MAX_SAMPLERS are not used
  - CVE-2012-2864

Show diffs side-by-side

added added

removed removed

Lines of Context:
105
105
#define LIST_IS_EMPTY(__list)                   \
106
106
    ((__list)->next == (__list))
107
107
 
 
108
/**
 
109
 * Cast from a pointer to a member of a struct back to the containing struct.
 
110
 *
 
111
 * 'sample' MUST be initialized, or else the result is undefined!
 
112
 */
108
113
#ifndef container_of
109
114
#define container_of(ptr, sample, member)                               \
110
115
    (void *)((char *)(ptr)                                              \
112
117
#endif
113
118
 
114
119
#define LIST_FOR_EACH_ENTRY(pos, head, member)                          \
115
 
   for (pos = container_of((head)->next, pos, member);                  \
 
120
   for (pos = NULL, pos = container_of((head)->next, pos, member);      \
116
121
        &pos->member != (head);                                         \
117
122
        pos = container_of(pos->member.next, pos, member))
118
123
 
119
124
#define LIST_FOR_EACH_ENTRY_SAFE(pos, storage, head, member)    \
120
 
   for (pos = container_of((head)->next, pos, member),                  \
 
125
   for (pos = NULL, pos = container_of((head)->next, pos, member),      \
121
126
        storage = container_of(pos->member.next, pos, member);  \
122
127
        &pos->member != (head);                                         \
123
128
        pos = storage, storage = container_of(storage->member.next, storage, member))
124
129
 
125
130
#define LIST_FOR_EACH_ENTRY_SAFE_REV(pos, storage, head, member)        \
126
 
   for (pos = container_of((head)->prev, pos, member),                  \
 
131
   for (pos = NULL, pos = container_of((head)->prev, pos, member),      \
127
132
        storage = container_of(pos->member.prev, pos, member);          \
128
133
        &pos->member != (head);                                         \
129
134
        pos = storage, storage = container_of(storage->member.prev, storage, member))
130
135
 
131
136
#define LIST_FOR_EACH_ENTRY_FROM(pos, start, head, member)              \
132
 
   for (pos = container_of((start), pos, member);                       \
 
137
   for (pos = NULL, pos = container_of((start), pos, member);           \
133
138
        &pos->member != (head);                                         \
134
139
        pos = container_of(pos->member.next, pos, member))
135
140
 
136
141
#define LIST_FOR_EACH_ENTRY_FROM_REV(pos, start, head, member)          \
137
 
   for (pos = container_of((start), pos, member);                       \
 
142
   for (pos = NULL, pos = container_of((start), pos, member);           \
138
143
        &pos->member != (head);                                         \
139
144
        pos = container_of(pos->member.prev, pos, member))
140
145