Ensure we don't truncate strcmps to nstring anymore...
authorJeremy Allison <jra@samba.org>
Sat, 13 Mar 2004 02:47:19 +0000 (02:47 +0000)
committerJeremy Allison <jra@samba.org>
Sat, 13 Mar 2004 02:47:19 +0000 (02:47 +0000)
Jeremy.
(This used to be commit b3aff7f214da97925690a5d0a887ea1b336d107a)

source3/lib/charcnv.c
source3/libsmb/nmblib.c
source3/nmbd/nmbd_browsesync.c
source3/nmbd/nmbd_elections.c
source3/nmbd/nmbd_serverlistdb.c
source3/nmbd/nmbd_workgroupdb.c

index d38bfdb5349794c7dbec8e5e7edeaa2285e440ca..c2213c966d24a7d9c5be95c2d1931619f623566f 100644 (file)
@@ -833,6 +833,7 @@ size_t push_ascii_nstring(void *dest, const char *src)
        size_t i, buffer_len, dest_len;
        smb_ucs2_t *buffer;
 
+       conv_silent = True;
        buffer_len = push_ucs2_allocate(&buffer, src);
        if (buffer_len == (size_t)-1) {
                smb_panic("failed to create UCS2 buffer");
@@ -854,6 +855,7 @@ size_t push_ascii_nstring(void *dest, const char *src)
        ((char *)dest)[dest_len] = '\0';
 
        SAFE_FREE(buffer);
+       conv_silent = False;
        return dest_len;
 }
 
index bc2cca0e0e30c43282f039ba9a6093b3deecd89f..3c25eba744f37e1d2ccd644716e91ccf6ab3e0ef 100644 (file)
@@ -855,8 +855,11 @@ static int build_dgram(char *buf,struct packet_struct *p)
 
 void make_nmb_name( struct nmb_name *n, const char *name, int type)
 {
+       fstring unix_name;
        memset( (char *)n, '\0', sizeof(struct nmb_name) );
-       push_ascii(n->name, name, sizeof(n->name), STR_TERMINATE|STR_UPPER);
+       fstrcpy(unix_name, name);
+       strupper_m(unix_name);
+       push_ascii(n->name, unix_name, sizeof(n->name), STR_TERMINATE);
        n->name_type = (unsigned int)type & 0xFF;
        push_ascii(n->scope,  global_scope(), 64, STR_TERMINATE);
 }
index 454c34976766c8f9ed8263acff83155245ecf24b..f16d8603c97fe3c1bea11f9163fa63f9b4608e72 100644 (file)
@@ -639,14 +639,14 @@ void sync_all_dmbs(time_t t)
      
        /* count how many syncs we might need to do */
        for (work=unicast_subnet->workgrouplist; work; work = work->next) {
-               if (strncmp(lp_workgroup(), work->work_group, sizeof(nstring))) {
+               if (strcmp(lp_workgroup(), work->work_group)) {
                        count++;
                }
        }
 
        /* sync with a probability of 1/count */
        for (work=unicast_subnet->workgrouplist; work; work = work->next) {
-               if (strncmp(lp_workgroup(), work->work_group, sizeof(nstring))) {
+               if (strcmp(lp_workgroup(), work->work_group)) {
                        fstring dmb_name;
 
                        if (((unsigned)sys_random()) % count != 0)
index 882c26ce8083b5277dee77862df77fa36598ac44..24026d7cd9e8dcca210817bbebe869b1e116c800 100644 (file)
@@ -97,7 +97,7 @@ static void check_for_master_browser_fail( struct subnet_record *subrec,
                return;
        }
 
-       if (strnequal(work->work_group, lp_workgroup(), sizeof(nstring)-1)) {
+       if (strequal(work->work_group, lp_workgroup())) {
 
                if (lp_local_master()) {
                        /* We have discovered that there is no local master
@@ -145,7 +145,7 @@ void check_master_browser_exists(time_t t)
                struct work_record *work;
 
                for (work = subrec->workgrouplist; work; work = work->next) {
-                       if (strnequal(work->work_group, workgroup_name, sizeof(nstring)-1) && !AM_LOCAL_MASTER_BROWSER(work)) {
+                       if (strequal(work->work_group, workgroup_name) && !AM_LOCAL_MASTER_BROWSER(work)) {
                                /* Do a name query for the local master browser on this net. */
                                query_name( subrec, work->work_group, 0x1d,
                                        check_for_master_browser_success,
@@ -284,7 +284,7 @@ void process_election(struct subnet_record *subrec, struct packet_struct *p, cha
                goto done;
        }
 
-       if (!strnequal(work->work_group, lp_workgroup(), sizeof(nstring)-1)) {
+       if (!strequal(work->work_group, lp_workgroup())) {
                DEBUG(3,("process_election: ignoring election request for workgroup %s on subnet %s as this \
 is not my workgroup.\n", work->work_group, subrec->subnet_name ));
                goto done;
@@ -381,7 +381,7 @@ void nmbd_message_election(int msg_type, pid_t src, void *buf, size_t len)
        for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec)) {
                struct work_record *work;
                for (work = subrec->workgrouplist; work; work = work->next) {
-                       if (strnequal(work->work_group, lp_workgroup(), sizeof(nstring)-1)) {
+                       if (strequal(work->work_group, lp_workgroup())) {
                                work->needelection = True;
                                work->ElectionCount=0;
                                work->mst_state = lp_local_master() ? MST_POTENTIAL : MST_NONE;
index cdb1089a54faa57ede1d80c56cd70b07b34e75ea..e6fad8319d91a35395b7b90a6d39cfba812fd634 100644 (file)
@@ -251,7 +251,7 @@ static uint32 write_this_workgroup_name( struct subnet_record *subrec,
 {
        struct subnet_record *ssub;
 
-       if(strnequal(lp_workgroup(), work->work_group, sizeof(nstring)-1))
+       if(strequal(lp_workgroup(), work->work_group))
                return 0;
 
        /* This is a workgroup we have seen on a broadcast subnet. All
index bd2737ef972773f575376fef2038b84e2b7724b2..3efef49c042deb8e24a6cabd6146e8b98b1dcf16 100644 (file)
@@ -88,7 +88,7 @@ static struct work_record *create_workgroup(const char *name, int ttl)
        for (subrec = FIRST_SUBNET; subrec && (t == -1); subrec = NEXT_SUBNET_INCLUDING_UNICAST(subrec)) {
                struct work_record *w;
                for (w = subrec->workgrouplist; w && t == -1; w = w->next) {
-                       if (strnequal(w->work_group, work->work_group, sizeof(nstring)-1))
+                       if (strequal(w->work_group, work->work_group))
                                t = w->token;
                }
        }
@@ -162,7 +162,7 @@ struct work_record *find_workgroup_on_subnet(struct subnet_record *subrec,
                name, subrec->subnet_name));
   
        for (ret = subrec->workgrouplist; ret; ret = ret->next) {
-               if (strnequal(ret->work_group,name,sizeof(nstring)-1)) {
+               if (strequal(ret->work_group,name)) {
                        DEBUGADD(4, ("found.\n"));
                        return(ret);
                }
@@ -223,7 +223,7 @@ void initiate_myworkgroup_startup(struct subnet_record *subrec, struct work_reco
 {
        int i;
 
-       if(!strnequal(lp_workgroup(), work->work_group,sizeof(nstring)-1))
+       if(!strequal(lp_workgroup(), work->work_group))
                return;
 
        /* If this is a broadcast subnet then start elections on it if we are so configured. */