X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Fresolve.c;h=aeb98ba6e923fe913f06dc5e00e58a30d185a718;hb=ff2c1efae8b8b1bf30013123bb17243dc682f7d3;hp=4ed83f992fbbb6208c95ae8d3c8d9e1e1c80efc0;hpb=46ec0f24f60cf476ccad300f80a47dc31753443c;p=ngircd-alex.git diff --git a/src/ngircd/resolve.c b/src/ngircd/resolve.c index 4ed83f99..aeb98ba6 100644 --- a/src/ngircd/resolve.c +++ b/src/ngircd/resolve.c @@ -2,21 +2,20 @@ * ngIRCd -- The Next Generation IRC Daemon * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de) * - * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen - * der GNU General Public License (GPL), wie von der Free Software Foundation - * herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2 - * der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version. - * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste - * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * Please read the file COPYING, README and AUTHORS for more information. * - * $Id: resolve.c,v 1.1 2002/05/27 11:23:27 alex Exp $ - * - * resolve.c: asyncroner Resolver + * Asynchronous resolver */ #include "portab.h" +static char UNUSED id[] = "$Id: resolve.c,v 1.6 2003/04/21 10:52:51 alex Exp $"; + #include "imp.h" #include #include @@ -40,7 +39,7 @@ LOCAL VOID Do_ResolveAddr PARAMS(( struct sockaddr_in *Addr, INT w_fd )); LOCAL VOID Do_ResolveName PARAMS(( CHAR *Host, INT w_fd )); #ifdef h_errno -LOCAL CHAR *Resolve_Error PARAMS(( INT H_Error )); +LOCAL CHAR *Get_Error PARAMS(( INT H_Error )); #endif @@ -67,7 +66,7 @@ Resolve_Addr( struct sockaddr_in *Addr ) s = malloc( sizeof( RES_STAT )); if( ! s ) { - Log( LOG_EMERG, "Resolver: Can't allocate memory!" ); + Log( LOG_EMERG, "Resolver: Can't allocate memory! [Resolve_Addr]" ); return NULL; } @@ -122,7 +121,7 @@ Resolve_Name( CHAR *Host ) s = malloc( sizeof( RES_STAT )); if( ! s ) { - Log( LOG_EMERG, "Resolver: Can't allocate memory!" ); + Log( LOG_EMERG, "Resolver: Can't allocate memory! [Resolve_Name]" ); return NULL; } @@ -175,7 +174,7 @@ Do_ResolveAddr( struct sockaddr_in *Addr, INT w_fd ) /* Namen aufloesen */ h = gethostbyaddr( (CHAR *)&Addr->sin_addr, sizeof( Addr->sin_addr ), AF_INET ); - if( h ) strcpy( hostname, h->h_name ); + if( h ) strlcpy( hostname, h->h_name, sizeof( hostname )); else { #ifdef h_errno @@ -183,11 +182,11 @@ Do_ResolveAddr( struct sockaddr_in *Addr, INT w_fd ) #else Log_Resolver( LOG_WARNING, "Can't resolve address \"%s\"!", inet_ntoa( Addr->sin_addr )); #endif - strcpy( hostname, inet_ntoa( Addr->sin_addr )); + strlcpy( hostname, inet_ntoa( Addr->sin_addr ), sizeof( hostname )); } /* Antwort an Parent schreiben */ - if( write( w_fd, hostname, strlen( hostname ) + 1 ) != ( strlen( hostname ) + 1 )) + if( (size_t)write( w_fd, hostname, strlen( hostname ) + 1 ) != (size_t)( strlen( hostname ) + 1 )) { Log_Resolver( LOG_CRIT, "Resolver: Can't write to parent: %s!", strerror( errno )); close( w_fd ); @@ -214,7 +213,7 @@ Do_ResolveName( CHAR *Host, INT w_fd ) if( h ) { addr = (struct in_addr *)h->h_addr; - strcpy( ip, inet_ntoa( *addr )); + strlcpy( ip, inet_ntoa( *addr ), sizeof( ip )); } else { @@ -227,7 +226,7 @@ Do_ResolveName( CHAR *Host, INT w_fd ) } /* Antwort an Parent schreiben */ - if( write( w_fd, ip, strlen( ip ) + 1 ) != ( strlen( ip ) + 1 )) + if( (size_t)write( w_fd, ip, strlen( ip ) + 1 ) != (size_t)( strlen( ip ) + 1 )) { Log_Resolver( LOG_CRIT, "Resolver: Can't write to parent: %s!", strerror( errno )); close( w_fd );