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
|
2005-07-30 Samuel Thibault <samuel.thibault@ens-lyon.org>
* ihash.c (add_one): Correct cast.
2005-07-30 Samuel Thibault <samuel.thibault@ens-lyon.org>
* node.c (ftpfs_create_node): Add check for result of
hurd_ihash_add(), correct addition of dir entry.
Index: libihash/ihash.c
===================================================================
RCS file: /cvsroot/hurd/hurd/libihash/ihash.c,v
retrieving revision 1.9
diff -u -u -p -r1.9 ihash.c
--- libihash/ihash.c 2 Apr 2004 17:01:03 -0000 1.9
+++ libihash/ihash.c 30 Jul 2005 01:38:27 -0000
@@ -329,7 +329,7 @@ add_one (hurd_ihash_t ht, hurd_ihash_key
ht->items[first_free].key = key;
if (ht->locp_offset != HURD_IHASH_NO_LOCP)
- *((hurd_ihash_locp_t) (((char *) value) + ht->locp_offset))
+ *((hurd_ihash_locp_t *) (((char *) value) + ht->locp_offset))
= &ht->items[first_free].value;
return 1;
Index: ftpfs/node.c
===================================================================
RCS file: /cvsroot/hurd/hurd/ftpfs/node.c,v
retrieving revision 1.2
diff -u -p -r1.2 node.c
--- ftpfs/node.c 1 Mar 2004 09:58:44 -0000 1.2
+++ ftpfs/node.c 30 Jul 2005 01:38:07 -0000
@@ -39,6 +39,7 @@ ftpfs_create_node (struct ftpfs_dir_entr
{
struct node *new;
struct netnode *nn = malloc (sizeof (struct netnode));
+ error_t err;
if (! nn)
return ENOMEM;
@@ -61,9 +62,16 @@ ftpfs_create_node (struct ftpfs_dir_entr
ftpfs_maptime);
spin_lock (&nn->fs->inode_mappings_lock);
- hurd_ihash_add (&nn->fs->inode_mappings, e->stat.st_ino, new);
+ err = hurd_ihash_add (&nn->fs->inode_mappings, e->stat.st_ino, e);
spin_unlock (&nn->fs->inode_mappings_lock);
+ if (err)
+ {
+ free(nn);
+ free(new);
+ return err;
+ }
+
e->node = new;
*node = new;
|