summaryrefslogtreecommitdiff
blob: 64193c22d052e4c2499af9aff98c240660da2446 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
diff -Naurp ncpfs-2.2.6.orig/contrib/tcl-utils/chgpwd.c ncpfs-2.2.6/contrib/tcl-utils/chgpwd.c
--- a/contrib/tcl-utils/chgpwd.c.orig	2005-01-27 12:35:59.000000000 -0500
+++ b/contrib/tcl-utils/chgpwd.c	2014-08-12 21:08:25.779190155 -0400
@@ -292,12 +292,12 @@ int main(int argc, char *argv[]) {
 	        }
         } else {
                 if (!treeName[0]) {
-                         NWCXGetPreferredDSTree(treeName,sizeof(treeName));
+                         dserr=NWCXGetPreferredDSTree(treeName,sizeof(treeName));
 
                 }
                 if (!treeName[0]) {
                         fprintf(stderr,"failed: You must specify a server or a tree\n");
-                        dserr=114;
+                        /*dserr=114;*/
                         goto finished;
                 }
 
diff -Naurp ncpfs-2.2.6.orig/contrib/tcl-utils/ncplist.c ncpfs-2.2.6/contrib/tcl-utils/ncplist.c
--- ncpfs-2.2.6.orig/contrib/tcl-utils/ncplist.c	2005-01-27 12:35:59.000000000 -0500
+++ ncpfs-2.2.6/contrib/tcl-utils/ncplist.c	2014-08-12 21:08:25.779190155 -0400
@@ -299,7 +299,12 @@ int main(int argc, char *argv[]) {
         }else {
 
                 if (!treeName[0]) {
-                         NWCXGetPreferredDSTree(treeName,sizeof(treeName));
+                         dserr=NWCXGetPreferredDSTree(treeName,sizeof(treeName));
+                         if (dserr){
+                            fprintf(stderr, "failed: Cannot get preffered DS tree: %s\n",
+                                    strnwerror(dserr);
+			    exit(106);
+			 }
 
                 }
                 if (!treeName[0]) {
diff -Naurp ncpfs-2.2.6.orig/contrib/tcl-utils/ncpreadprop.c ncpfs-2.2.6/contrib/tcl-utils/ncpreadprop.c
--- ncpfs-2.2.6.orig/contrib/tcl-utils/ncpreadprop.c	2005-01-27 12:35:59.000000000 -0500
+++ ncpfs-2.2.6/contrib/tcl-utils/ncpreadprop.c	2014-08-12 21:08:25.779190155 -0400
@@ -470,7 +470,7 @@ main(int argc, char *argv[])
             }
         } else {
                 if (!treeName[0]) {
-                         NWCXGetPreferredDSTree(treeName,sizeof(treeName));
+                         dserr=NWCXGetPreferredDSTree(treeName,sizeof(treeName));
 
                 }
                 if (!treeName[0]) {
diff -Naurp ncpfs-2.2.6.orig/contrib/tcl-utils/ncpreadprops.c ncpfs-2.2.6/contrib/tcl-utils/ncpreadprops.c
--- ncpfs-2.2.6.orig/contrib/tcl-utils/ncpreadprops.c	2005-01-27 12:35:59.000000000 -0500
+++ ncpfs-2.2.6/contrib/tcl-utils/ncpreadprops.c	2014-08-12 21:08:25.779190155 -0400
@@ -507,7 +507,7 @@ main(int argc, char *argv[])
             }
         } else {
                 if (!treeName[0]) {
-                         NWCXGetPreferredDSTree(treeName,sizeof(treeName));
+                         dserr=NWCXGetPreferredDSTree(treeName,sizeof(treeName));
 
                 }
                 if (!treeName[0]) {
diff -Naurp ncpfs-2.2.6.orig/lib/nwclient.c ncpfs-2.2.6/lib/nwclient.c
--- ncpfs-2.2.6.orig/lib/nwclient.c	2005-01-27 12:35:59.000000000 -0500
+++ ncpfs-2.2.6/lib/nwclient.c	2014-08-12 21:08:25.779190155 -0400
@@ -481,6 +481,10 @@ static char* readnwinfosfile (char * use
                 *err = EACCES;
                 return NULL;
         }
+        if (st.st_uid != getuid()) {
+                *err = EACCES;
+                return NULL;
+        }
         if ((st.st_mode & (S_IRWXO | S_IRWXG)) != 0) {
                 *err = NCPLIB_INVALID_MODE;
                 return NULL;
@@ -560,7 +564,7 @@ NWDSCCODE NWCXGetPreferredDSTree    (NWD
   if (!res)
         res=readnwinfosfile (NULL,NDS_PREFERRED_TREE,NULL, &err);
   if (!res)
-    return -1;
+    return err;
   if (strlen (res)+1 >maxLen)
      return NWE_BUFFER_OVERFLOW;
   strcpy(preferTree,res);
@@ -581,7 +585,7 @@ NWDSCCODE NWCXGetDefaultNameContext (con
    if (!res)
         res=readnwinfosfile (NULL,NDS_PREFERRED_NAME_CTX,forTree,&err);
   if (!res)
-    return -1;
+    return err;
   if (strlen (res)+1 >maxLen)
      return NWE_BUFFER_OVERFLOW;
   strcpy(nameContext,res);
@@ -603,7 +607,7 @@ NWDSCCODE NWCXGetPreferredServer    (con
 
 		res=readnwinfosfile (NULL, NDS_PREFERRED_SERVER, forTree, &err);
 		if (!res) {
-			return -1;
+			return err;
 		}
 	}
 	/* test that this server DO belongs to tree forTree*/
@@ -644,7 +648,7 @@ NWDSCCODE NWCXGetDefaultUserName (const
          if (!res)
                 res=readnwinfosfile (NULL,NDS_USER,forTree, &err);
          if (!res)
-                return -1;
+                return err;
         if (strlen (res)+1 >maxLen)
                 return NWE_BUFFER_OVERFLOW;
         strcpy(defaultName,res);
diff -Naurp ncpfs-2.2.6.orig/sutil/ncplogin.c ncpfs-2.2.6/sutil/ncplogin.c
--- ncpfs-2.2.6.orig/sutil/ncplogin.c	2005-01-27 12:35:59.000000000 -0500
+++ ncpfs-2.2.6/sutil/ncplogin.c	2014-08-12 21:08:25.779190155 -0400
@@ -588,7 +588,10 @@ main(int argc, char *argv[])
 		int flags = 0;
 
 		if (!info.tree) {
-			NWCXGetPreferredDSTree(ntree, sizeof(ntree));
+			err=NWCXGetPreferredDSTree(ntree, sizeof(ntree));
+			if (err){
+			   errexit(104, _("Cannot get preffered DS tree: %s\n"),strnwerror(err));
+			}
 			info.tree = ntree;
 		}