Roll back PSTRING_SANCTIFY patch; just leave non-controversial type
authorMartin Pool <mbp@samba.org>
Wed, 16 Jan 2002 02:42:07 +0000 (02:42 +0000)
committerMartin Pool <mbp@samba.org>
Wed, 16 Jan 2002 02:42:07 +0000 (02:42 +0000)
and constness changes.
(This used to be commit cee0ec72746122c962e6c5278a736266a7f2c424)

source3/include/pstring.h
source3/include/safe_string.h
source3/lib/util_str.c
source3/param/loadparm.c
source3/smbd/service.c

index 97ad5c93978b9a80a9030cb1f5a5fcc38767652f..5f3f21cb1df46d99fafb06f42a2bb13f3719ec89 100644 (file)
 #define PSTRING_LEN 1024
 #define FSTRING_LEN 256
 
-#ifdef PSTRING_SANCTIFY
-
-/* If you define this, pstring and fstring become distinguished types,
- * so that it's harder to accidentally overflow them by for example
- * passing an fstring on the lhs of pstrcpy.
- *
- * To pass them to non-pstring-aware functions, use PSTR and check
- * that the function takes a const.  They should almost never be
- * modified except by special calls.  In those unusual cases, use
- * PSTR_MUTABLE.
- *
- * This is off by default so as not to produce too many warnings.  As
- * the code is vetted it can become the default. */
-
-typedef union { char pstring_contents[PSTRING_LEN]; } pstring[1];
-typedef union { char fstring_contents[FSTRING_LEN]; } fstring[1];
-
-#  define PSTR(p) ((const char *) ((p)->pstring_contents))
-#  define FSTR(f) ((const char *) ((f)->fstring_contents))
-
-/* Please use the const functions instead if possible. */
-#  define PSTR_MUTABLE(p) (((p)->pstring_contents))
-#  define FSTR_MUTABLE(f) (((f)->fstring_contents))
-
-#else /* ndef PSTRING_SANCTIFY */
-
-/* Old interface. */
-
 typedef char pstring[PSTRING_LEN];
 typedef char fstring[FSTRING_LEN];
 
-#define PSTR(p) ((const char *) p)
-#define FSTR(f) ((const char *) f)
-#define PSTR_MUTABLE(p) (p)
-#define FSTR_MUTABLE(f) (f)
-
-#endif /* ndef PSTRING_SANCTIFY */
-
 #define _PSTRING
 
 #endif /* ndef _PSTRING */
index c4f44c0a34b6c20cb7c582b8da86287920bbe3ec..a086d7495c70b08ed5eb028fbe9dc8b785f2757d 100644 (file)
@@ -1,6 +1,5 @@
 /* 
    Unix SMB/Netbios implementation.
-   Version 1.9.
    Safe string handling routines.
    Copyright (C) Andrew Tridgell 1994-1998
    
 #endif /* sprintf */
 #define sprintf __ERROR__XX__NEVER_USE_SPRINTF__;
 
-#define pstrcpy(d,s) safe_strcpy(PSTR_MUTABLE(d), (s),sizeof(pstring)-1)
-#define pstrcat(d,s) safe_strcat(PSTR_MUTABLE(d), (s),sizeof(pstring)-1)
-#define fstrcpy(d,s) safe_strcpy(FSTR_MUTABLE(d),(s),sizeof(fstring)-1)
-#define fstrcat(d,s) safe_strcat(FSTR_MUTABLE(d),(s),sizeof(fstring)-1)
+#define pstrcpy(d,s) safe_strcpy((d), (s),sizeof(pstring)-1)
+#define pstrcat(d,s) safe_strcat((d), (s),sizeof(pstring)-1)
+#define fstrcpy(d,s) safe_strcpy((d),(s),sizeof(fstring)-1)
+#define fstrcat(d,s) safe_strcat((d),(s),sizeof(fstring)-1)
 
 #define wpstrcpy(d,s) safe_strcpy_w((d),(s),sizeof(wpstring))
 #define wpstrcat(d,s) safe_strcat_w((d),(s),sizeof(wpstring))
index b1d50ad9112d8f9fe0e899e933a0aab8638d4054..dbfaf179a173c62a50226a27ca61a93f30bf97c4 100644 (file)
@@ -945,7 +945,7 @@ int pstr_sprintf(pstring s, const char *fmt, ...)
        int ret;
 
        va_start(ap, fmt);
-       ret = vsnprintf(PSTR_MUTABLE(s), PSTRING_LEN, fmt, ap);
+       ret = vsnprintf(s, PSTRING_LEN, fmt, ap);
        va_end(ap);
        return ret;
 }
@@ -958,7 +958,7 @@ int fstr_sprintf(fstring s, const char *fmt, ...)
        int ret;
 
        va_start(ap, fmt);
-       ret = vsnprintf(FSTR_MUTABLE(s), FSTRING_LEN, fmt, ap);
+       ret = vsnprintf(s, FSTRING_LEN, fmt, ap);
        va_end(ap);
        return ret;
 }
index 461fd8f05ecd817d9f099cd11d6b1a49686393ac..f6771b85d9c2cfa8c1f7c8fcf8988850134d6420 100644 (file)
@@ -1885,7 +1885,7 @@ BOOL lp_add_home(const char *pszHomename, int iDefaultService, const char *pszHo
 /***************************************************************************
 add a new service, based on an old one.
 ***************************************************************************/
-int lp_add_service(char *pszService, int iDefaultService)
+int lp_add_service(const char *pszService, int iDefaultService)
 {
        return (add_a_service(ServicePtrs[iDefaultService], pszService));
 }
index 120868f24a423986596b9645de69c95f02c7e708..9b6f38f2ec15562f935b7e4fd0e9d02f68ca2653 100644 (file)
@@ -104,17 +104,19 @@ int add_home_service(const char *service, const char *homedir)
        if ((usr_p = strchr_m(service,*lp_winbind_separator())) != NULL)
                fstrcpy(new_service, usr_p+1);
 
-       lp_add_home(new_service,iHomeService,homedir);
+       lp_add_home(new_service, iHomeService, homedir);
        iService = lp_servicenumber(new_service);
 
        return iService;
 }
 
-/****************************************************************************
- Find a service entry. service is always in dos codepage.
-****************************************************************************/
 
-int find_service(char *service)
+/**
+ * Find a service entry. service is always in dos codepage.
+ *
+ * @param service is modified (to canonical form??)
+ **/
+int find_service(fstring service)
 {
    int iService;
 
@@ -158,7 +160,7 @@ int find_service(char *service)
          {
             DEBUG(3,("%s is a valid printer name\n", service));
             DEBUG(3,("adding %s as a printer service\n", service));
-            lp_add_printer(service,iPrinterService);
+            lp_add_printer(service, iPrinterService);
             iService = lp_servicenumber(service);
             if (iService < 0)
                DEBUG(0,("failed to add %s as a printer service!\n", service));
@@ -192,8 +194,8 @@ int find_service(char *service)
        iService = find_service(defservice);
        if (iService >= 0)
        {
-         all_string_sub(service,"_","/",0);
-         iService = lp_add_service(service,iService);
+         all_string_sub(service, "_","/",0);
+         iService = lp_add_service(service, iService);
        }
      }
    }
@@ -201,7 +203,7 @@ int find_service(char *service)
    if (iService >= 0)
      if (!VALID_SNUM(iService))
      {
-       DEBUG(0,("Invalid snum %d for %s\n",iService,service));
+       DEBUG(0,("Invalid snum %d for %s\n",iService, service));
        iService = -1;
      }
 
@@ -216,7 +218,7 @@ int find_service(char *service)
  do some basic sainity checks on the share.  
  This function modifies dev, ecode.
 ****************************************************************************/
-static NTSTATUS share_sanity_checks(int snum, char* service, char *dev) 
+static NTSTATUS share_sanity_checks(int snum, char* service, pstring dev) 
 {
        
        if (!lp_snum_ok(snum) || 
@@ -229,7 +231,7 @@ static NTSTATUS share_sanity_checks(int snum, char* service, char *dev)
        if (strequal(service,"IPC$") || strequal(service,"ADMIN$"))
                pstrcpy(dev,"IPC");
        
-       if (*dev == '?' || !*dev) {
+       if (dev[0] == '?' || !dev[0]) {
                if (lp_print_ok(snum)) {
                        pstrcpy(dev,"LPT1:");
                } else {
@@ -318,10 +320,12 @@ static void set_admin_user(connection_struct *conn)
 
 /****************************************************************************
  Make a connection to a service.
+ *
+ * @param service (May be modified to canonical form???)
 ****************************************************************************/
 
 connection_struct *make_connection(char *service, DATA_BLOB password, 
-                                  char *dev,uint16 vuid, NTSTATUS *status)
+                                  const char *dev, uint16 vuid, NTSTATUS *status)
 {
        int snum;
        struct passwd *pass = NULL;
@@ -361,16 +365,19 @@ connection_struct *make_connection(char *service, DATA_BLOB password,
                        if (validated_username(vuid)) {
                                fstring unix_username;
                                fstrcpy(unix_username,validated_username(vuid));
-                               return(make_connection(unix_username,password,dev,vuid,status));
+                               return make_connection(unix_username,
+                                                      password,dev,vuid,status);
                        }
                } else {
                        /* Security = share. Try with current_user_info.smb_name
                         * as the username.  */
-                       if(*current_user_info.smb_name) {
+                       if (* current_user_info.smb_name) {
                                fstring unix_username;
-                               fstrcpy(unix_username,current_user_info.smb_name);
+                               fstrcpy(unix_username,
+                                       current_user_info.smb_name);
                                map_username(unix_username);
-                               return(make_connection(unix_username,password,dev,vuid,status));
+                               return make_connection(unix_username,
+                                                      password,dev,vuid,status);
                        }
                }
        }