Use "unix netbios name" type unstring - 64 bytes long to manipulate netbios
authorJeremy Allison <jra@samba.org>
Mon, 15 Mar 2004 21:53:59 +0000 (21:53 +0000)
committerJeremy Allison <jra@samba.org>
Mon, 15 Mar 2004 21:53:59 +0000 (21:53 +0000)
names in nmbd. Allows conversion from dos codepage mb strings (ie. SJIS) to
expand to utf8 size on read.
Jeremy.
(This used to be commit b9da3e941d4233c2d3931f32767f3e51b214033e)

22 files changed:
source3/include/nameserv.h
source3/include/safe_string.h
source3/include/smb.h
source3/nmbd/asyncdns.c
source3/nmbd/nmbd_become_dmb.c
source3/nmbd/nmbd_become_lmb.c
source3/nmbd/nmbd_browserdb.c
source3/nmbd/nmbd_browsesync.c
source3/nmbd/nmbd_elections.c
source3/nmbd/nmbd_incomingdgrams.c
source3/nmbd/nmbd_incomingrequests.c
source3/nmbd/nmbd_logonnames.c
source3/nmbd/nmbd_mynames.c
source3/nmbd/nmbd_namelistdb.c
source3/nmbd/nmbd_nameregister.c
source3/nmbd/nmbd_packets.c
source3/nmbd/nmbd_processlogon.c
source3/nmbd/nmbd_sendannounce.c
source3/nmbd/nmbd_synclists.c
source3/nmbd/nmbd_winsproxy.c
source3/nmbd/nmbd_winsserver.c
source3/nmbd/nmbd_workgroupdb.c

index 5362960d62b59ca5be95b561972b81b2c004ad3a..ec3d56c06b7192f48641b03211619bee68ef5602 100644 (file)
@@ -226,8 +226,8 @@ struct name_record {
 /* Browser cache for synchronising browse lists. */
 struct browse_cache_record {
        ubi_dlNode     node[1];
-       fstring        lmb_name;
-       fstring        work_group;
+       unstring        lmb_name;
+       unstring        work_group;
        struct in_addr ip;
        time_t         sync_time;
        time_t         death_time; /* The time the record must be removed. */
@@ -265,9 +265,9 @@ struct work_record {
        enum logon_state log_state;
 
        /* Work group info. */
-       fstring work_group;
+       unstring work_group;
        int     token;        /* Used when communicating with backup browsers. */
-       fstring local_master_browser_name;      /* Current local master browser. */
+       unstring local_master_browser_name;      /* Current local master browser. */
 
        /* Announce info. */
        time_t lastannounce_time;
index cb3f37c48410167cbe422482d1075d84c34e6f2f..b22c5efcc99aa62984dab533b4a0ced8486a3470 100644 (file)
@@ -139,6 +139,7 @@ size_t __unsafe_string_function_usage_here_char__(void);
 #define fstrcpy(d,s) safe_strcpy((d),(s),sizeof(fstring)-1)
 #define fstrcat(d,s) safe_strcat((d),(s),sizeof(fstring)-1)
 #define nstrcpy(d,s) safe_strcpy((d), (s),sizeof(nstring)-1)
+#define unstrcpy(d,s) safe_strcpy((d), (s),sizeof(unstring)-1)
 
 /* the addition of the DEVELOPER checks in safe_strcpy means we must
  * update a lot of code. To make this a little easier here are some
index 835066e26361e996c6196797511d0fac720533de..7a1e8f87baed623df719bc072cf3ccc32016904a 100644 (file)
@@ -1509,7 +1509,10 @@ struct cnotify_fns {
 #include "smb_macros.h"
 
 #define MAX_NETBIOSNAME_LEN 16
+/* DOS character, NetBIOS namestring. Type used on the wire. */
 typedef char nstring[MAX_NETBIOSNAME_LEN];
+/* Unix character, NetBIOS namestring. Type used to manipulate name in nmbd. */
+typedef char unstring[MAX_NETBIOSNAME_LEN*4];
 
 /* A netbios name structure. */
 struct nmb_name {
index dafbff7af20da923bc93d148519dbb921c351d47..653cb97fbb0678481f3b1cc8d70d0b20d7824145 100644 (file)
@@ -27,7 +27,7 @@
 static struct name_record *add_dns_result(struct nmb_name *question, struct in_addr addr)
 {
        int name_type = question->name_type;
-       fstring qname;
+       unstring qname;
 
        pull_ascii_nstring(qname, sizeof(qname), question->name);
   
@@ -81,7 +81,7 @@ int asyncdns_fd(void)
 static void asyncdns_process(void)
 {
        struct query_record r;
-       fstring qname;
+       unstring qname;
 
        DEBUGLEVEL = -1;
 
@@ -89,8 +89,7 @@ static void asyncdns_process(void)
                if (read_data(fd_in, (char *)&r, sizeof(r)) != sizeof(r)) 
                        break;
 
-               fstrcpy(qname, r.name.name);
-
+               pull_ascii_nstring( qname, sizeof(qname), r.name.name);
                r.result.s_addr = interpret_addr(qname);
 
                if (write_data(fd_out, (char *)&r, sizeof(r)) != sizeof(r))
@@ -321,7 +320,7 @@ BOOL queue_dns_query(struct packet_struct *p,struct nmb_name *question,
                     struct name_record **n)
 {
        struct in_addr dns_ip;
-       nstring qname;
+       unstring qname;
 
        pull_ascii_nstring(qname, question->name);
 
index c9b0a2258071a83af38b9843586c98bdab495446..fb1fb33a8180f379bd2b0dedd91414b0b1e7792a 100644 (file)
@@ -37,7 +37,7 @@ static void become_domain_master_fail(struct subnet_record *subrec,
                                       struct response_record *rrec,
                                       struct nmb_name *fail_name)
 {
-       fstring failname;
+       unstring failname;
        struct work_record *work;
        struct server_record *servrec;
 
@@ -80,7 +80,7 @@ static void become_domain_master_stage2(struct subnet_record *subrec,
                                         uint16 nb_flags,
                                         int ttl, struct in_addr registered_ip)
 {
-       fstring regname;
+       unstring regname;
        struct work_record *work;
        struct server_record *servrec;
 
@@ -200,7 +200,7 @@ static void become_domain_master_query_success(struct subnet_record *subrec,
                         struct nmb_name *nmbname, struct in_addr ip, 
                         struct res_rec *rrec)
 {
-       fstring name;
+       unstring name;
        pull_ascii_nstring(name, sizeof(name), nmbname->name);
 
        /* If the given ip is not ours, then we can't become a domain
@@ -241,7 +241,7 @@ static void become_domain_master_query_fail(struct subnet_record *subrec,
                                     struct response_record *rrec,
                                     struct nmb_name *question_name, int fail_code)
 {
-       fstring name;
+       unstring name;
 
        /* If the query was unicast, and the error is not NAM_ERR (name didn't exist),
                then this is a failure. Otherwise, not finding the name is what we want. */
index 8d66320f3eb762f6fa8b72cefb07a32261eadd49..c536deb6f45e21525598146f6b90d1491733dc27 100644 (file)
@@ -33,7 +33,7 @@ extern uint16 samba_nb_type; /* Samba's NetBIOS name type. */
 void insert_permanent_name_into_unicast( struct subnet_record *subrec, 
                                                 struct nmb_name *nmbname, uint16 nb_type )
 {
-       fstring name;
+       unstring name;
        struct name_record *namerec;
 
        if((namerec = find_name_on_subnet(unicast_subnet, nmbname, FIND_SELF_NAME)) == NULL) {
@@ -135,7 +135,7 @@ static void unbecome_local_master_success(struct subnet_record *subrec,
                              struct in_addr released_ip)
 { 
        BOOL force_new_election = False;
-       fstring relname;
+       unstring relname;
 
        memcpy((char *)&force_new_election, userdata->data, sizeof(BOOL));
 
@@ -166,7 +166,7 @@ static void unbecome_local_master_fail(struct subnet_record *subrec, struct resp
        struct name_record *namerec;
        struct userdata_struct *userdata = rrec->userdata;
        BOOL force_new_election = False;
-       fstring failname;
+       unstring failname;
 
        memcpy((char *)&force_new_election, userdata->data, sizeof(BOOL));
 
@@ -330,7 +330,7 @@ static void become_local_master_stage2(struct subnet_record *subrec,
        struct server_record *sl;
        struct work_record *work;
        struct server_record *servrec;
-       fstring regname;
+       unstring regname;
 
        pull_ascii_nstring(regname, sizeof(regname), registered_name->name);
        work = find_workgroup_on_subnet( subrec, regname);
@@ -410,7 +410,7 @@ static void become_local_master_fail2(struct subnet_record *subrec,
                                       struct response_record *rrec,
                                       struct nmb_name *fail_name)
 {
-       fstring failname;
+       unstring failname;
        struct work_record *work;
 
        DEBUG(0,("become_local_master_fail2: failed to register name %s on subnet %s. \
@@ -590,5 +590,5 @@ local_master_browser_name for workgroup %s to workgroup name.\n",
   }
 #endif
 
-       fstrcpy(work->local_master_browser_name, newname);
+       unstrcpy(work->local_master_browser_name, newname);
 }
index d78125915698b746af7db63c10d6b2035870cac5..c92513fae81a0221bff0abab3842fa976d94d27d 100644 (file)
@@ -106,8 +106,8 @@ struct browse_cache_record *create_browser_in_lmb_cache( const char *work_name,
        /* Allow the new lmb to miss an announce period before we remove it. */
        browc->death_time = now + ( (CHECK_TIME_MST_ANNOUNCE + 2) * 60 );
 
-       fstrcpy( browc->lmb_name, browser_name);
-       fstrcpy( browc->work_group, work_name);
+       unstrcpy( browc->lmb_name, browser_name);
+       unstrcpy( browc->work_group, work_name);
        strupper_m( browc->lmb_name );
        strupper_m( browc->work_group );
   
index f16d8603c97fe3c1bea11f9163fa63f9b4608e72..15827e21bae613f87b739ad8f1efcba5cdb5519b 100644 (file)
@@ -102,7 +102,7 @@ As a local master browser, send an announce packet to the domain master browser.
 static void announce_local_master_browser_to_domain_master_browser( struct work_record *work)
 {
        pstring outbuf;
-       fstring myname;
+       unstring myname;
        char *p;
 
        if(ismyip(work->dmb_addr)) {
@@ -120,7 +120,7 @@ static void announce_local_master_browser_to_domain_master_browser( struct work_
        SCVAL(p,0,ANN_MasterAnnouncement);
        p++;
 
-       fstrcpy(myname, global_myname());
+       unstrcpy(myname, global_myname());
        strupper_m(myname);
        myname[15]='\0';
        /* The call below does CH_UNIX -> CH_DOS conversion. JRA */
@@ -146,7 +146,7 @@ As a local master browser, do a sync with a domain master browser.
 
 static void sync_with_dmb(struct work_record *work)
 {
-       fstring dmb_name;
+       unstring dmb_name;
 
        if( DEBUGLVL( 2 ) ) {
                dbgtext( "sync_with_dmb:\n" );
@@ -156,7 +156,7 @@ static void sync_with_dmb(struct work_record *work)
                dbgtext( "for workgroup %s\n", work->work_group );
        }
 
-       pull_ascii_nstring(dmb_name, sizeof(fstring), work->dmb_name.name);
+       pull_ascii_nstring(dmb_name, sizeof(dmb_name), work->dmb_name.name);
        sync_browse_lists(work, dmb_name, work->dmb_name.name_type, 
                work->dmb_addr, False, True);
 }
@@ -197,7 +197,7 @@ static void domain_master_node_status_success(struct subnet_record *subrec,
                p += 1;
 
                while (numnames--) {
-                       fstring qname;
+                       unstring qname;
                        uint16 nb_flags;
                        int name_type;
 
@@ -278,7 +278,7 @@ static void find_domain_master_name_query_success(struct subnet_record *subrec,
        struct nmb_name nmbname;
        struct userdata_struct *userdata;
        size_t size = sizeof(struct userdata_struct) + sizeof(fstring)+1;
-       fstring qname;
+       unstring qname;
 
        pull_ascii_nstring(qname, sizeof(qname), q_name->name);
        if( !(work = find_workgroup_on_subnet(subrec, qname)) ) {
@@ -399,7 +399,7 @@ static void get_domain_master_name_node_status_success(struct subnet_record *sub
                                               struct in_addr from_ip)
 {
        struct work_record *work;
-       fstring server_name;
+       unstring server_name;
 
        server_name[0] = 0;
 
@@ -420,7 +420,7 @@ static void get_domain_master_name_node_status_success(struct subnet_record *sub
                p += 1;
 
                while (numnames--) {
-                       fstring qname;
+                       unstring qname;
                        uint16 nb_flags;
                        int name_type;
 
@@ -434,7 +434,7 @@ static void get_domain_master_name_node_status_success(struct subnet_record *sub
                        if(!(nb_flags & NB_GROUP) && (name_type == 0x00) && 
                                        server_name[0] == 0) {
                                /* this is almost certainly the server netbios name */
-                               fstrcpy(server_name, qname);
+                               unstrcpy(server_name, qname);
                                continue;
                        }
 
@@ -460,7 +460,7 @@ static void get_domain_master_name_node_status_success(struct subnet_record *sub
                                                return;
 
                                        /* remember who the master is */
-                                       fstrcpy(work->local_master_browser_name, server_name);
+                                       unstrcpy(work->local_master_browser_name, server_name);
                                        make_nmb_name(&nmbname, server_name, 0x20);
                                        work->dmb_name = nmbname;
                                        work->dmb_addr = from_ip;
@@ -647,7 +647,7 @@ void sync_all_dmbs(time_t t)
        /* sync with a probability of 1/count */
        for (work=unicast_subnet->workgrouplist; work; work = work->next) {
                if (strcmp(lp_workgroup(), work->work_group)) {
-                       fstring dmb_name;
+                       unstring dmb_name;
 
                        if (((unsigned)sys_random()) % count != 0)
                                continue;
index 24026d7cd9e8dcca210817bbebe869b1e116c800..470cf4277b52b4b2c1c4b23fae067394fd3d273e 100644 (file)
@@ -34,7 +34,7 @@ static void send_election_dgram(struct subnet_record *subrec, const char *workgr
                                 uint32 criterion, int timeup,const char *server_name)
 {
        pstring outbuf;
-       fstring srv_name;
+       unstring srv_name;
        char *p;
 
        DEBUG(2,("send_election_dgram: Sending election packet for workgroup %s on subnet %s\n",
@@ -49,7 +49,7 @@ static void send_election_dgram(struct subnet_record *subrec, const char *workgr
        SIVAL(p,1,criterion);
        SIVAL(p,5,timeup*1000); /* ms - Despite what the spec says. */
        p += 13;
-       fstrcpy(srv_name, server_name);
+       unstrcpy(srv_name, server_name);
        strupper_m(srv_name);
        /* The following call does UNIX -> DOS charset conversion. */
        pstrcpy_base(p, srv_name, outbuf);
@@ -70,7 +70,7 @@ static void check_for_master_browser_success(struct subnet_record *subrec,
                                  struct nmb_name *answer_name,
                                  struct in_addr answer_ip, struct res_rec *rrec)
 {
-       fstring aname;
+       unstring aname;
        pull_ascii_nstring(aname, sizeof(aname), answer_name->name);
        DEBUG(3,("check_for_master_browser_success: Local master browser for workgroup %s exists at \
 IP %s (just checking).\n", aname, inet_ntoa(answer_ip) ));
@@ -85,7 +85,7 @@ static void check_for_master_browser_fail( struct subnet_record *subrec,
                                            struct nmb_name *question_name,
                                            int fail_code)
 {
-       fstring workgroup_name;
+       unstring workgroup_name;
        struct work_record *work;
 
        pull_ascii_nstring(workgroup_name,sizeof(workgroup_name),question_name->name);
@@ -263,9 +263,9 @@ void process_election(struct subnet_record *subrec, struct packet_struct *p, cha
        int version = CVAL(buf,0);
        uint32 criterion = IVAL(buf,1);
        int timeup = IVAL(buf,5)/1000;
-       fstring server_name;
+       unstring server_name;
        struct work_record *work;
-       fstring workgroup_name;
+       unstring workgroup_name;
 
        pull_ascii_nstring(server_name, sizeof(server_name), buf+13);
        pull_ascii_nstring(workgroup_name, sizeof(workgroup_name), dgram->dest_name.name);
index 1450610e190c78f351991ea4c6ba6e50530ae086..53b19471572b15deb8dc68d6ae9fb0fb614bfb69 100644 (file)
@@ -97,13 +97,13 @@ void process_host_announce(struct subnet_record *subrec, struct packet_struct *p
 {
        struct dgram_packet *dgram = &p->packet.dgram;
        int ttl = IVAL(buf,1)/1000;
-       fstring announce_name;
+       unstring announce_name;
        uint32 servertype = IVAL(buf,23);
        fstring comment;
        struct work_record *work;
        struct server_record *servrec;
-       fstring work_name;
-       fstring source_name;
+       unstring work_name;
+       unstring source_name;
 
        START_PROFILE(host_announce);
 
@@ -144,7 +144,7 @@ void process_host_announce(struct subnet_record *subrec, struct packet_struct *p
         */
 
        if(strequal(work_name, global_myname()))
-               fstrcpy(work_name,lp_workgroup());
+               unstrcpy(work_name,lp_workgroup());
 
        /*
         * We are being very agressive here in adding a workgroup
@@ -198,12 +198,12 @@ void process_workgroup_announce(struct subnet_record *subrec, struct packet_stru
 {
        struct dgram_packet *dgram = &p->packet.dgram;
        int ttl = IVAL(buf,1)/1000;
-       fstring workgroup_announce_name;
-       fstring master_name;
+       unstring workgroup_announce_name;
+       unstring master_name;
        uint32 servertype = IVAL(buf,23);
        struct work_record *work;
-       fstring source_name;
-       fstring dest_name;
+       unstring source_name;
+       unstring dest_name;
 
        START_PROFILE(workgroup_announce);
 
@@ -255,13 +255,13 @@ void process_local_master_announce(struct subnet_record *subrec, struct packet_s
 {
        struct dgram_packet *dgram = &p->packet.dgram;
        int ttl = IVAL(buf,1)/1000;
-       fstring server_name;
+       unstring server_name;
        uint32 servertype = IVAL(buf,23);
        fstring comment;
-       fstring work_name;
+       unstring work_name;
        struct work_record *work;
        struct server_record *servrec;
-       fstring source_name;
+       unstring source_name;
 
        START_PROFILE(local_master_announce);
 
@@ -369,7 +369,7 @@ done:
 void process_master_browser_announce(struct subnet_record *subrec, 
                                      struct packet_struct *p,char *buf)
 {
-       fstring local_master_name;
+       unstring local_master_name;
        struct work_record *work;
        struct browse_cache_record *browrec;
 
@@ -425,11 +425,11 @@ void process_lm_host_announce(struct subnet_record *subrec, struct packet_struct
        int osmajor=CVAL(buf,5);           /* major version of node software */
        int osminor=CVAL(buf,6);           /* minor version of node software */
        int ttl = SVAL(buf,7);
-       fstring announce_name;
+       unstring announce_name;
        struct work_record *work;
        struct server_record *servrec;
-       fstring work_name;
-       fstring source_name;
+       unstring work_name;
+       unstring source_name;
        fstring comment;
        char *s = buf+9;
 
@@ -479,7 +479,7 @@ originate from OS/2 Warp client. Ignoring packet.\n"));
         */
 
        if(strequal(work_name, global_myname()))
-               fstrcpy(work_name,lp_workgroup());
+               unstrcpy(work_name,lp_workgroup());
 
        /*
         * We are being very agressive here in adding a workgroup
@@ -541,11 +541,11 @@ static void send_backup_list_response(struct subnet_record *subrec,
        char outbuf[1024];
        char *p, *countptr;
        unsigned int count = 0;
-       fstring send_to_namestr;
+       unstring send_to_namestr;
 #if 0
   struct server_record *servrec;
 #endif
-       fstring myname;
+       unstring myname;
 
        memset(outbuf,'\0',sizeof(outbuf));
 
@@ -565,7 +565,7 @@ static void send_backup_list_response(struct subnet_record *subrec,
   
        /* We always return at least one name - our own. */
        count = 1;
-       fstrcpy(myname, global_myname());
+       unstrcpy(myname, global_myname());
        strupper_m(myname);
        myname[15]='\0';
        push_pstring_base(p, myname, outbuf);
@@ -642,7 +642,7 @@ void process_get_backup_list_request(struct subnet_record *subrec,
        unsigned char max_number_requested = CVAL(buf,0);
        uint32 token = IVAL(buf,1); /* Sender's key index for the workgroup. */
        int name_type = dgram->dest_name.name_type;
-       fstring workgroup_name;
+       unstring workgroup_name;
        struct subnet_record *search_subrec = subrec;
 
        START_PROFILE(get_backup_list);
@@ -774,7 +774,7 @@ void process_announce_request(struct subnet_record *subrec, struct packet_struct
 {
        struct dgram_packet *dgram = &p->packet.dgram;
        struct work_record *work;
-       fstring workgroup_name;
+       unstring workgroup_name;
  
        START_PROFILE(announce_request);
 
@@ -814,7 +814,7 @@ done:
 void process_lm_announce_request(struct subnet_record *subrec, struct packet_struct *p, char *buf)
 {
        struct dgram_packet *dgram = &p->packet.dgram;
-       fstring workgroup_name;
+       unstring workgroup_name;
 
        START_PROFILE(lm_announce_request);
 
index d43cefc0df07c0ef063a4ea25de2729fc7397712..9214594096c5cd5d63735d13568567670122d073 100644 (file)
@@ -58,7 +58,7 @@ void process_name_release_request(struct subnet_record *subrec,
        struct nmb_packet *nmb = &p->packet.nmb;
        struct in_addr owner_ip;
        struct nmb_name *question = &nmb->question.question_name;
-       fstring qname;
+       unstring qname;
        BOOL bcast = nmb->header.nm_flags.bcast;
        uint16 nb_flags = get_nb_flags(nmb->additional->rdata);
        BOOL group = (nb_flags & NB_GROUP) ? True : False;
@@ -275,7 +275,7 @@ We put our own names first, then in alphabetical order.
 
 static int status_compare(char *n1,char *n2)
 {
-       fstring name1, name2;
+       unstring name1, name2;
        int l1,l2,l3;
 
        memset(name1, '\0', sizeof(name1));
@@ -300,7 +300,7 @@ static int status_compare(char *n1,char *n2)
                        (l1!=l3 || strncmp(n1,global_myname(),l3) != 0))
                return 1;
 
-       return memcmp(n1,n2,sizeof(fstring));
+       return memcmp(n1,n2,sizeof(name1));
 }
 
 /****************************************************************************
@@ -310,7 +310,7 @@ static int status_compare(char *n1,char *n2)
 void process_node_status_request(struct subnet_record *subrec, struct packet_struct *p)
 {
        struct nmb_packet *nmb = &p->packet.nmb;
-       fstring qname;
+       unstring qname;
        int ques_type = nmb->question.question_name.name_type;
        char rdata[MAX_DGRAM_SIZE];
        char *countptr, *buf, *bufend, *buf0;
@@ -344,7 +344,7 @@ subnet %s - name not found.\n", nmb_namestr(&nmb->question.question_name),
        while (buf < bufend) {
                if( (namerec->data.source == SELF_NAME) || (namerec->data.source == PERMANENT_NAME) ) {
                        int name_type = namerec->name.name_type;
-                       fstring name;
+                       unstring name;
 
                        pull_ascii_nstring(name, sizeof(name), namerec->name.name);
                        strupper_m(name);
index b6e841139f9a6e91e11c8cbd5620b500ec833cbd..e4264305911e62df085707083d6f6d3fb8ecebb1 100644 (file)
@@ -35,7 +35,7 @@ static void become_logon_server_fail(struct subnet_record *subrec,
                                       struct response_record *rrec,
                                       struct nmb_name *fail_name)
 {
-       fstring failname;
+       unstring failname;
        struct work_record *work;
        struct server_record *servrec;
 
@@ -76,7 +76,7 @@ static void become_logon_server_success(struct subnet_record *subrec,
                                         uint16 nb_flags,
                                         int ttl, struct in_addr registered_ip)
 {
-       fstring reg_name;
+       unstring reg_name;
        struct work_record *work;
        struct server_record *servrec;
 
index 83a8361ed986884a3163a4b221a6e7194ad02c00..07247d5495ea0c137a0bb653fd71f0d48255a0fd 100644 (file)
@@ -93,7 +93,7 @@ static void insert_refresh_name_into_unicast( struct subnet_record *subrec,
        }
 
        if((namerec = find_name_on_subnet(unicast_subnet, nmbname, FIND_SELF_NAME)) == NULL) {
-               fstring name;
+               unstring name;
                pull_ascii_nstring(name, sizeof(name), nmbname->name);
                /* The name needs to be created on the unicast subnet. */
                (void)add_name_to_subnet( unicast_subnet, name,
index 9f89abdbb28d7a3813e28bdd245414b5e65fb2c7..bb14ff7641ae8d7b50b97c37f7839015e5da79fc 100644 (file)
@@ -45,7 +45,7 @@ void set_samba_nb_type(void)
 static void upcase_name( struct nmb_name *target, struct nmb_name *source )
 {
        int i;
-       fstring targ;
+       unstring targ;
        fstring scope;
 
        if( NULL != source )
@@ -255,7 +255,7 @@ void standard_success_register(struct subnet_record *subrec,
 
        namerec = find_name_on_subnet( subrec, nmbname, FIND_SELF_NAME );
        if( NULL == namerec ) {
-               fstring name;
+               unstring name;
                pull_ascii_nstring(name, sizeof(name), nmbname->name);
                add_name_to_subnet( subrec, name, nmbname->name_type,
                        nb_flags, ttl, SELF_NAME, 1, &registered_ip );
index 4fbdd143e1f60e842b4130d3085330c9353a9e16..4e11881f063876ed905bf9bf1a65ea1801102bef 100644 (file)
@@ -85,7 +85,7 @@ static void register_name_response(struct subnet_record *subrec,
                 */
                
 #if 1 /* OLD_SAMBA_SERVER_HACK */
-               fstring ans_name;
+               unstring ans_name;
                pull_ascii_nstring(ans_name, sizeof(ans_name), answer_name->name);
                if((nmb->header.rcode == ACT_ERR) && strequal(lp_workgroup(), ans_name) &&
                   (answer_name->name_type == 0x1b)) {
@@ -418,7 +418,7 @@ static void multihomed_register_name(struct nmb_name *nmbname, uint16 nb_flags,
        struct subnet_record *subrec;
        char **wins_tags;
        struct in_addr *ip_list;
-       fstring name;
+       unstring name;
 
        for(subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec) )
                num_ips++;
@@ -476,7 +476,7 @@ void register_name(struct subnet_record *subrec,
        errno = 0;
        push_ascii_nstring(nname, name);
         if (errno == E2BIG) {
-               fstring tname;
+               unstring tname;
                pull_ascii_nstring(tname, sizeof(tname), nname);
                DEBUG(0,("register_name: NetBIOS name %s is too long. Truncating to %s\n",
                        name, tname));
index b5cbaab00b7850eae547cddeeddcf4832d893492..d8b50a1b2e9a83a223acfcb233c8071f756b77ad 100644 (file)
@@ -1034,7 +1034,7 @@ static void process_browse_packet(struct packet_struct *p, char *buf,int len)
        int command = CVAL(buf,0);
        struct subnet_record *subrec = find_subnet_for_dgram_browse_packet(p);
        char scope[64];
-       fstring src_name;
+       unstring src_name;
 
        /* Drop the packet if it's a different NetBIOS scope, or the source is from one of our names. */
        pull_ascii(scope, dgram->dest_name.scope, 64, 64, STR_TERMINATE);
@@ -1121,7 +1121,7 @@ static void process_lanman_packet(struct packet_struct *p, char *buf,int len)
        int command = SVAL(buf,0);
        struct subnet_record *subrec = find_subnet_for_dgram_browse_packet(p);
        char scope[64];
-       fstring src_name;
+       unstring src_name;
 
        /* Drop the packet if it's a different NetBIOS scope, or the source is from one of our names. */
 
index ff2aea6c08d50e24496193c8725d0fbf0e07a133..da93224043c0cd28f39be7dc5ace74782adf4bc0 100644 (file)
@@ -235,7 +235,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n",
 
                        {
                                fstring getdc_str;
-                               nstring source_name;
+                               fstring source_name;
                                char *q = buf + 2;
                                fstring asccomp;
 
@@ -440,7 +440,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n",
                                send_mailslot(True, getdc,
                                        outbuf,PTR_DIFF(q,outbuf),
                                        global_myname(), 0x0,
-                                       dgram->source_name.name,
+                                       source_name,
                                        dgram->source_name.name_type,
                                        p->ip, *iface_ip(p->ip), p->port);  
                                break;
index 87908e352cf87eef1b9e58ead7b49933673fcb6c..6e50d2f2ff420807b1856b2fd05a5e07aa3c79de 100644 (file)
@@ -525,7 +525,7 @@ void browse_sync_remote(time_t t)
        struct work_record *work;
        pstring outbuf;
        char *p;
-       fstring myname;
+       unstring myname;
  
        if (last_time && (t < (last_time + REMOTE_ANNOUNCE_INTERVAL)))
                return;
@@ -558,7 +558,7 @@ for workgroup %s on subnet %s.\n", lp_workgroup(), FIRST_SUBNET->subnet_name ));
        SCVAL(p,0,ANN_MasterAnnouncement);
        p++;
 
-       fstrcpy(myname, global_myname());
+       unstrcpy(myname, global_myname());
        strupper_m(myname);
        myname[15]='\0';
        push_pstring_base(p, myname, outbuf);
index 424af1e2e3cd515f91333afa896c7158b935b01e..86f1f760fd23029cd187c1241711d4278097bed5 100644 (file)
@@ -31,8 +31,8 @@
 
 struct sync_record {
        struct sync_record *next, *prev;
-       fstring workgroup;
-       fstring server;
+       unstring workgroup;
+       unstring server;
        pstring fname;
        struct in_addr ip;
        pid_t pid;
@@ -148,8 +148,8 @@ done:
 
        ZERO_STRUCTP(s);
        
-       fstrcpy(s->workgroup, work->work_group);
-       fstrcpy(s->server, name);
+       unstrcpy(s->workgroup, work->work_group);
+       unstrcpy(s->server, name);
        s->ip = ip;
 
        slprintf(s->fname, sizeof(pstring)-1,
@@ -206,7 +206,7 @@ static void complete_one(struct sync_record *s,
                                                          sname, lp_max_ttl());
                        if (work) {
                                /* remember who the master is */
-                               fstrcpy(work->local_master_browser_name, comment);
+                               unstrcpy(work->local_master_browser_name, comment);
                        }
                }
                return;
@@ -243,7 +243,7 @@ static void complete_one(struct sync_record *s,
 static void complete_sync(struct sync_record *s)
 {
        XFILE *f;
-       fstring server, type_str;
+       unstring server, type_str;
        unsigned type;
        pstring comment;
        pstring line;
index d91818698e87b1602118d14281d8588b615b3853..cce168adb2ff6e864b54fbe1fd6ef9a78ca5688c 100644 (file)
@@ -30,7 +30,7 @@ static void wins_proxy_name_query_request_success( struct subnet_record *subrec,
                         struct userdata_struct *userdata,
                         struct nmb_name *nmbname, struct in_addr ip, struct res_rec *rrec)
 {
-       fstring name;
+       unstring name;
        struct packet_struct *original_packet;
        struct subnet_record *orig_broadcast_subnet;
        struct name_record *namerec;
@@ -193,7 +193,7 @@ void make_wins_proxy_name_query_request( struct subnet_record *subrec,
        long *ud[(sizeof(struct userdata_struct) + sizeof(struct subrec *) + 
                sizeof(struct packet_struct *))/sizeof(long *) + 1];
        struct userdata_struct *userdata = (struct userdata_struct *)ud;
-       fstring qname;
+       unstring qname;
 
        memset(ud, '\0', sizeof(ud));
  
index fd7718e2a69cdf93eb40f1278aafce8ab9f9e8d0..0f0190adb616697fd006fdf993d73d830fc525ef 100644 (file)
@@ -744,7 +744,7 @@ querying for name %s in order to replace it and this reply.\n", nmb_namestr(ques
 void wins_process_name_registration_request(struct subnet_record *subrec,
                                             struct packet_struct *p)
 {
-       fstring name;
+       unstring name;
        struct nmb_packet *nmb = &p->packet.nmb;
        struct nmb_name *question = &nmb->question.question_name;
        BOOL bcast = nmb->header.nm_flags.bcast;
@@ -1119,7 +1119,7 @@ void wins_process_multihomed_name_registration_request( struct subnet_record *su
        struct in_addr from_ip;
        BOOL group = (nb_flags & NB_GROUP) ? True : False;
        struct in_addr our_fake_ip = *interpret_addr2("0.0.0.0");
-       fstring qname;
+       unstring qname;
 
        putip((char *)&from_ip,&nmb->additional->rdata[2]);
 
@@ -1479,7 +1479,7 @@ void wins_process_name_query_request(struct subnet_record *subrec,
        struct nmb_packet *nmb = &p->packet.nmb;
        struct nmb_name *question = &nmb->question.question_name;
        struct name_record *namerec = NULL;
-       fstring qname;
+       unstring qname;
 
        DEBUG(3,("wins_process_name_query: name query for name %s from IP %s\n", 
                nmb_namestr(question), inet_ntoa(p->ip) ));
@@ -1845,7 +1845,7 @@ void wins_write_database(BOOL background)
                DEBUGADD(4,("%2x\n", namerec->data.nb_flags ));
 
                if( namerec->data.source == REGISTER_NAME ) {
-                       fstring name;
+                       unstring name;
                        pull_ascii_nstring(name, sizeof(name), namerec->name.name);
                        x_fprintf(fp, "\"%s#%02x\" %d ", name,namerec->name.name_type, /* Ignore scope. */
                                (int)namerec->data.death_time);
index 3efef49c042deb8e24a6cabd6146e8b98b1dcf16..8880cb58bb407bcb4a53369a157ac36aacbd19ce 100644 (file)
@@ -61,13 +61,13 @@ static struct work_record *create_workgroup(const char *name, int ttl)
         errno = 0;
         push_ascii_nstring(nname, name);
         if (errno == E2BIG) {
-               fstring tname;
+               unstring tname;
                 pull_ascii_nstring(tname, sizeof(tname), nname);
-               fstrcpy(work->work_group,tname);
+               unstrcpy(work->work_group,tname);
                 DEBUG(0,("create_workgroup: workgroup name %s is too long. Truncating to %s\n",
                        name, tname));
         } else {
-               fstrcpy(work->work_group,name);
+               unstrcpy(work->work_group,name);
         }
        work->serverlist = NULL;