Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/mfs/mfs_dentry.c

    r7a46bfe rc2e50d7  
    4444int
    4545mfs_read_dentry(struct mfs_node *mnode,
    46                      struct mfs_dentry_info *d_info, unsigned index)
     46    struct mfs_dentry_info *d_info, unsigned index)
    4747{
    4848        const struct mfs_instance *inst = mnode->instance;
     
    5757
    5858        if (block == 0) {
    59                 /*End of the dentries list*/
     59                /* End of the dentries list */
    6060                r = EOK;
    6161                goto out_err;
     
    7676                d_info->d_inum = conv32(sbi->native, d3->d_inum);
    7777                memcpy(d_info->d_name, d3->d_name, MFS3_MAX_NAME_LEN);
     78                d_info->d_name[MFS3_MAX_NAME_LEN] = 0;
    7879        } else {
    7980                const int namelen = longnames ? MFS_L_MAX_NAME_LEN :
    80                                     MFS_MAX_NAME_LEN;
     81                    MFS_MAX_NAME_LEN;
    8182
    8283                struct mfs_dentry *d;
    8384
    8485                d = b->data + dentry_off * (longnames ? MFSL_DIRSIZE :
    85                                             MFS_DIRSIZE);
     86                    MFS_DIRSIZE);
    8687                d_info->d_inum = conv16(sbi->native, d->d_inum);
    8788                memcpy(d_info->d_name, d->d_name, namelen);
     89                d_info->d_name[namelen] = 0;
    8890        }
    8991
     
    99101/**Write a directory entry on disk.
    100102 *
    101  * @param d_info        Pointer to the directory entry structure to write on disk.
    102  *
    103  * @return              EOK on success or a negative error code.
     103 * @param d_info Pointer to the directory entry structure to write on disk.
     104 *
     105 * @return       EOK on success or a negative error code.
    104106 */
    105107int
     
    166168                return ENAMETOOLONG;
    167169
    168         /*Search the directory entry to be removed*/
     170        /* Search the directory entry to be removed */
    169171        unsigned i;
    170172        for (i = 0; i < mnode->ino_i->i_size / sbi->dirsize ; ++i) {
     
    176178
    177179                if (name_len == d_name_len &&
    178                                 !bcmp(d_info.d_name, d_name, name_len)) {
     180                    !bcmp(d_info.d_name, d_name, name_len)) {
     181
    179182                        d_info.d_inum = 0;
    180183                        r = mfs_write_dentry(&d_info);
     
    195198 */
    196199int
    197 mfs_insert_dentry(struct mfs_node *mnode, const char *d_name, fs_index_t d_inum)
     200mfs_insert_dentry(struct mfs_node *mnode, const char *d_name,
     201    fs_index_t d_inum)
    198202{
    199203        int r;
     
    207211                return ENAMETOOLONG;
    208212
    209         /*Search for an empty dentry*/
     213        /* Search for an empty dentry */
    210214        unsigned i;
    211215        for (i = 0; i < mnode->ino_i->i_size / sbi->dirsize; ++i) {
     
    215219
    216220                if (d_info.d_inum == 0) {
    217                         /*This entry is not used*/
     221                        /* This entry is not used */
    218222                        empty_dentry_found = true;
    219223                        break;
     
    229233
    230234                if (b == 0) {
    231                         /*Increase the inode size*/
     235                        /* Increase the inode size */
    232236
    233237                        uint32_t dummy;
     
    249253        d_info.d_inum = d_inum;
    250254        memcpy(d_info.d_name, d_name, name_len);
    251         d_info.d_name[name_len] = 0;
     255        if (name_len < sbi->max_name_len)
     256                d_info.d_name[name_len] = 0;
    252257
    253258        r = mfs_write_dentry(&d_info);
Note: See TracChangeset for help on using the changeset viewer.