File netatalk-CVE-2022-45188.patch of Package netatalk.27687

Index: netatalk-3.1.0/etc/afpd/appl.c
===================================================================
--- netatalk-3.1.0.orig/etc/afpd/appl.c
+++ netatalk-3.1.0/etc/afpd/appl.c
@@ -419,6 +419,10 @@ int afp_getappl(AFPObj *obj, char *ibuf,
         memcpy( &len, p, sizeof( len ));
         len = ntohs( len );
         p += sizeof( u_short );
+        if ( len > sizeof(obj->oldtmp) - (p - buf) ) {
+            *rbuflen = 0;
+            return( AFPERR_NOITEM );
+        }
         if (( cc = read( sa.sdt_fd, p, len )) < len ) {
             break;
         }
@@ -447,11 +451,16 @@ int afp_getappl(AFPObj *obj, char *ibuf,
         char		*u, *m;
         int		i, h;
 
+        if ( len > sizeof(utomname) ) {
+            *rbuflen = 0;
+            return( AFPERR_NOITEM );
+        }
+
         u = p;
         m = utomname;
         i = len;
         while ( i ) {
-            if ( *u == ':' && *(u+1) != '\0' && islxdigit( *(u+1)) &&
+            if ( i >= 3 && i + 2 < len && *u == ':' && *(u+1) != '\0' && islxdigit( *(u+1)) &&
                     *(u+2) != '\0' && islxdigit( *(u+2))) {
                 ++u, --i;
                 h = hextoint( *u ) << 4;
openSUSE Build Service is sponsored by