Procházet zdrojové kódy

make more use of strnlen()

includes adding the so far superfluous prototype for the replacemnt to
common.h.
Oswald Buddenhagen před 8 roky
rodič
revize
509a191474
2 změnil soubory, kde provedl 5 přidání a 3 odebrání
  1. 3 0
      src/common.h
  2. 2 3
      src/drv_imap.c

+ 3 - 0
src/common.h

@@ -119,6 +119,9 @@ void free_string_list( string_list_t *list );
 #ifndef HAVE_MEMRCHR
 void *memrchr( const void *s, int c, size_t n );
 #endif
+#ifndef HAVE_STRNLEN
+size_t strnlen( const char *str, size_t maxlen );
+#endif
 
 int starts_with( const char *str, int strl, const char *cmp, int cmpl );
 int starts_with_upper( const char *str, int strl, const char *cmp, int cmpl );

+ 2 - 3
src/drv_imap.c

@@ -403,7 +403,7 @@ submit_imap_cmd( imap_store_t *ctx, struct imap_cmd *cmd )
 static char *
 imap_vprintf( const char *fmt, va_list ap )
 {
-	const char *s, *es;
+	const char *s;
 	char *d, *ed;
 	int maxlen;
 	char c;
@@ -454,8 +454,7 @@ imap_vprintf( const char *fmt, va_list ap )
 					*d++ = (char)va_arg( ap , int );
 				} else if (c == 's') {
 					s = va_arg( ap, const char * );
-					es = memchr( s, 0, maxlen );
-					l = es ? es - s : maxlen;
+					l = strnlen( s, maxlen );
 					if (d + l > ed)
 						oob();
 					memcpy( d, s, l );