Changeset d6084ef in mainline for uspace/srv/vfs/vfs_ops.c


Ignore:
Timestamp:
2008-03-02T15:05:26Z (16 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
dadcec1
Parents:
9bb85f3
Message:

Make VFS canonify path names on lookup.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/vfs/vfs_ops.c

    r9bb85f3 rd6084ef  
    7676        };
    7777
    78         return vfs_lookup_internal("/", strlen("/"), L_DIRECTORY, result,
    79             &altroot);
     78        return vfs_lookup_internal("/", L_DIRECTORY, result, &altroot);
    8079}
    8180
     
    150149        /* Allocate buffer for the mount point data being received. */
    151150        uint8_t *buf;
    152         buf = malloc(size);
     151        buf = malloc(size + 1);
    153152        if (!buf) {
    154153                ipc_answer_0(callid, ENOMEM);
     
    159158        /* Deliver the mount point. */
    160159        (void) ipc_data_write_finalize(callid, buf, size);
     160        buf[size] = '\0';
    161161
    162162        /*
     
    187187                /* We already have the root FS. */
    188188                rwlock_write_lock(&namespace_rwlock);
    189                 rc = vfs_lookup_internal(buf, size, L_DIRECTORY, &mp_res,
    190                     NULL);
     189                rc = vfs_lookup_internal(buf, L_DIRECTORY, &mp_res, NULL);
    191190                if (rc != EOK) {
    192191                        /* The lookup failed for some reason. */
     
    315314         * directly into the PLB using some kind of a callback.
    316315         */
    317         char *path = malloc(len);
     316        char *path = malloc(len + 1);
    318317       
    319318        if (!path) {
     
    329328                return;
    330329        }
     330        path[len] = '\0';
    331331       
    332332        /*
     
    342342        /* The path is now populated and we can call vfs_lookup_internal(). */
    343343        vfs_lookup_res_t lr;
    344         rc = vfs_lookup_internal(path, len, lflag, &lr, NULL);
     344        rc = vfs_lookup_internal(path, lflag, &lr, NULL);
    345345        if (rc) {
    346346                if (lflag & L_CREATE)
     
    637637         * directly into the PLB using some kind of a callback.
    638638         */
    639         char *path = malloc(len);
     639        char *path = malloc(len + 1);
    640640       
    641641        if (!path) {
     
    651651                return;
    652652        }
     653        path[len] = '\0';
    653654       
    654655        rwlock_write_lock(&namespace_rwlock);
    655656        int lflag = L_DIRECTORY | L_CREATE | L_EXCLUSIVE;
    656         rc = vfs_lookup_internal(path, len, lflag, NULL, NULL);
     657        rc = vfs_lookup_internal(path, lflag, NULL, NULL);
    657658        rwlock_write_unlock(&namespace_rwlock);
    658659        free(path);
     
    679680         * directly into the PLB using some kind of a callback.
    680681         */
    681         char *path = malloc(len);
     682        char *path = malloc(len + 1);
    682683       
    683684        if (!path) {
     
    693694                return;
    694695        }
     696        path[len] = '\0';
    695697       
    696698        rwlock_write_lock(&namespace_rwlock);
    697699        lflag &= L_DIRECTORY;   /* sanitize lflag */
    698700        vfs_lookup_res_t lr;
    699         rc = vfs_lookup_internal(path, len, lflag | L_DESTROY, &lr, NULL);
     701        rc = vfs_lookup_internal(path, lflag | L_DESTROY, &lr, NULL);
    700702        free(path);
    701703        if (rc != EOK) {
Note: See TracChangeset for help on using the changeset viewer.