@@ -132,11 +132,14 @@ py_getrandom(void *buffer, Py_ssize_t size, int raise)
132132 * see https://bugs.python.org/issue26839. To avoid this, use the
133133 * GRND_NONBLOCK flag. */
134134 const int flags = GRND_NONBLOCK ;
135+
136+ char * dest ;
135137 int n ;
136138
137139 if (!getrandom_works )
138140 return 0 ;
139141
142+ dest = buffer ;
140143 while (0 < size ) {
141144#ifdef sun
142145 /* Issue #26735: On Solaris, getrandom() is limited to returning up
@@ -150,23 +153,23 @@ py_getrandom(void *buffer, Py_ssize_t size, int raise)
150153#ifdef HAVE_GETRANDOM
151154 if (raise ) {
152155 Py_BEGIN_ALLOW_THREADS
153- n = getrandom (buffer , n , flags );
156+ n = getrandom (dest , n , flags );
154157 Py_END_ALLOW_THREADS
155158 }
156159 else {
157- n = getrandom (buffer , n , flags );
160+ n = getrandom (dest , n , flags );
158161 }
159162#else
160163 /* On Linux, use the syscall() function because the GNU libc doesn't
161164 * expose the Linux getrandom() syscall yet. See:
162165 * https://sourceware.org/bugzilla/show_bug.cgi?id=17252 */
163166 if (raise ) {
164167 Py_BEGIN_ALLOW_THREADS
165- n = syscall (SYS_getrandom , buffer , n , flags );
168+ n = syscall (SYS_getrandom , dest , n , flags );
166169 Py_END_ALLOW_THREADS
167170 }
168171 else {
169- n = syscall (SYS_getrandom , buffer , n , flags );
172+ n = syscall (SYS_getrandom , dest , n , flags );
170173 }
171174#endif
172175
@@ -204,7 +207,7 @@ py_getrandom(void *buffer, Py_ssize_t size, int raise)
204207 return -1 ;
205208 }
206209
207- buffer += n ;
210+ dest += n ;
208211 size -= n ;
209212 }
210213 return 1 ;
0 commit comments