utils.c
上传用户:pycemail
上传日期:2007-01-04
资源大小:329k
文件大小:2k
源码类别:

Ftp客户端

开发平台:

Unix_Linux

  1. /*
  2.  * ProFTPD - FTP server daemon
  3.  * Copyright (c) 1997, 1998 Public Flood Software
  4.  *
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or
  8.  * (at your option) any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
  18.  */
  19. /* Utility module linked to utilities to provide functions normally
  20.  * present in full src tree.
  21.  * $Id: utils.c,v 1.4 1999/09/26 05:32:08 macgyver Exp $
  22.  */
  23. #include "conf.h"
  24. void block_alarms()
  25. { /* NOP */ }
  26. void unblock_alarms()
  27. { /* NOP */ }
  28. /* Validate anything returned from the 'outside', since it's untrusted
  29.  * information.
  30.  */
  31. char *inet_validate(char *buf) {
  32.   char *p;
  33.   
  34.   /* Validate anything returned from a DNS.
  35.    */
  36.   for(p = buf; p && *p; p++) {
  37.     /* Per RFC requirements, these are all that are valid from a DNS.
  38.      */
  39.     if(!isalnum(*p) && *p != '.' && *p != '-') {
  40.       /* We set it to _ because we know that's an invalid, yet safe, option
  41.        * for a DNS entry.
  42.        */
  43.       *p = '_';
  44.     }
  45.   }
  46.   
  47.   return buf;
  48. }
  49. /* "safe" strcat, saves room for  at end of dest, and refuses to copy
  50.  * more than "n" bytes.
  51.  */
  52. char *sstrcat(char *dest, const char *src, size_t n) {
  53.   register char *d;
  54.   
  55.   for(d = dest; *d && n > 1; d++, n--) ;
  56.   
  57.   while(n-- > 1 && *src)
  58.     *d++ = *src++;
  59.   
  60.   *d = 0;
  61.   return dest;
  62. }
  63. /* "safe" strncpy, saves room for  at end of dest, and refuses to copy
  64.  * more than "n" bytes.
  65.  */
  66. char *sstrncpy(char *dest, const char *src, size_t n) {
  67.   register char *d;
  68.   
  69.   if(!dest || !src || !*dest || !*src)
  70.     return 0;
  71.   
  72.   for(d = dest; *src && n > 1; n--)
  73.     *d++ = *src++;
  74.   
  75.   *d = 0;
  76.   
  77.   return dest;
  78. }