diff --git a/websockets.scm b/websockets.scm index 1960482..d0fe95e 100644 --- a/websockets.scm +++ b/websockets.scm @@ -191,6 +191,8 @@ (define-external wsv scheme-pointer payload) ((foreign-lambda* void () " + int i; + if (wslen > UINT_MAX) { return -1; } const unsigned char* maskkey2 = wsmaskkey; @@ -198,14 +200,14 @@ const unsigned char* __restrict kb = maskkey2; - for (int i = wslen >> 2; i != 0; --i) + for (i = wslen >> 2; i != 0; --i) { *((unsigned int*)wsv) ^= kd; wsv += 4; } const int rem = wslen & 3; - for (int i = 0; i < rem; ++i) + for (i = 0; i < rem; ++i) { *((unsigned int*)wsv++) ^= kb[i]; } @@ -245,19 +247,21 @@ ;; (begin ;; ((foreign-lambda* void () ;; " +;; int i; +;; ;; const unsigned char* maskkey2 = wsmaskkey; ;; const unsigned int kd = *(unsigned int*)maskkey2; ;; const unsigned char* __restrict kb = maskkey2; -;; for (int i = wslen >> 2; i != 0; --i) +;; for (i = wslen >> 2; i != 0; --i) ;; { ;; *((unsigned int*)wsv) ^= kd; ;; wsv += 4; ;; } ;; const int rem = wslen & 3; -;; for (int i = 0; i < rem; ++i) +;; for (i = 0; i < rem; ++i) ;; { ;; *((unsigned int*)wsv++) ^= kb[i]; ;; } @@ -341,9 +345,11 @@ (= 1 ((foreign-lambda* int () " + int i; + if (ws_utlen > UINT_MAX) { return -1; } - for (int i = ws_utlen; i != 0; --i) + for (i = ws_utlen; i != 0; --i) { if (*((unsigned char*)ws_uts++) > 127) {