projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'driver-refactoring' into new-driver-refactoring
[yaffs2.git]
/
direct
/
yaffsfs.c
diff --git
a/direct/yaffsfs.c
b/direct/yaffsfs.c
index 705106e7a13e603333fbeaf15c02ca5f9d26a1fa..7ee486a8d0d95cb2afa2dcd2eb69dd368db441de 100644
(file)
--- a/
direct/yaffsfs.c
+++ b/
direct/yaffsfs.c
@@
-501,6
+501,9
@@
static struct yaffs_dev *yaffsfs_FindDevice(const YCHAR *path,
thisMatchLength = 0;
matching = 1;
thisMatchLength = 0;
matching = 1;
+ if(!p)
+ continue;
+
while (matching && *p && *leftOver) {
/* Skip over any /s */
while (yaffsfs_IsPathDivider(*p))
while (matching && *p && *leftOver) {
/* Skip over any /s */
while (yaffsfs_IsPathDivider(*p))
@@
-793,7
+796,7
@@
int yaffs_open_sharing(const YCHAR *path, int oflag, int mode, int sharing)
int notDir = 0;
int loop = 0;
int notDir = 0;
int loop = 0;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0)< 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1077,7
+1080,7
@@
static int yaffsfs_do_read(int handle, void *vbuf, unsigned int nbyte,
Y_LOFF_T maxRead;
u8 *buf = (u8 *) vbuf;
Y_LOFF_T maxRead;
u8 *buf = (u8 *) vbuf;
- if (
!vbuf
) {
+ if (
yaffsfs_CheckMemRegion(vbuf, nbyte, 1) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1199,7
+1202,7
@@
static int yaffsfs_do_write(int handle, const void *vbuf, unsigned int nbyte,
int nToWrite = 0;
const u8 *buf = (const u8 *)vbuf;
int nToWrite = 0;
const u8 *buf = (const u8 *)vbuf;
- if (
!vbuf
) {
+ if (
yaffsfs_CheckMemRegion(vbuf, nbyte, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1310,7
+1313,7
@@
int yaffs_truncate(const YCHAR *path, Y_LOFF_T new_size)
int notDir = 0;
int loop = 0;
int notDir = 0;
int loop = 0;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1425,7
+1428,7
@@
static int yaffsfs_DoUnlink(const YCHAR *path, int isDirectory)
int notDir = 0;
int loop = 0;
int notDir = 0;
int loop = 0;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1494,7
+1497,8
@@
int yaffs_rename(const YCHAR *oldPath, const YCHAR *newPath)
YCHAR *alt_newpath = NULL;
YCHAR *alt_newpath = NULL;
- if (!oldPath || !newPath) {
+ if (yaffsfs_CheckMemRegion(oldPath, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(newPath, 0, 0) < 0) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1633,7
+1637,8
@@
static int yaffsfs_DoStatOrLStat(const YCHAR *path,
int notDir = 0;
int loop = 0;
int notDir = 0;
int loop = 0;
- if (!path || !buf) {
+ if (yaffsfs_CheckMemRegion(path, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(buf, sizeof(*buf), 1) < 0) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1681,7
+1686,7
@@
int yaffs_fstat(int fd, struct yaffs_stat *buf)
int retVal = -1;
int retVal = -1;
- if (
!buf
) {
+ if (
yaffsfs_CheckMemRegion(buf, sizeof(*buf), 1) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1802,7
+1807,9
@@
static int yaffs_do_setxattr(const YCHAR *path, const char *name,
int retVal = -1;
int retVal = -1;
- if (!path || !name || !data) {
+ if (yaffsfs_CheckMemRegion(path, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(name, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(data, size, 0) < 0) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1858,7
+1865,8
@@
int yaffs_fsetxattr(int fd, const char *name,
int retVal = -1;
int retVal = -1;
- if (!name || !data) {
+ if (yaffsfs_CheckMemRegion(name, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(data, size, 0) < 0) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1890,7
+1898,9
@@
static int yaffs_do_getxattr(const YCHAR *path, const char *name,
int notDir = 0;
int loop = 0;
int notDir = 0;
int loop = 0;
- if (!path || !name || !data) {
+ if (yaffsfs_CheckMemRegion(path, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(name, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(data, size, 1) < 0) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1942,7
+1952,8
@@
int yaffs_fgetxattr(int fd, const char *name, void *data, int size)
int retVal = -1;
int retVal = -1;
- if (!name || !data) {
+ if (yaffsfs_CheckMemRegion(name, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(data, size, 1) < 0) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-1974,7
+1985,8
@@
static int yaffs_do_listxattr(const YCHAR *path, char *data,
int notDir = 0;
int loop = 0;
int notDir = 0;
int loop = 0;
- if (!path || !data) {
+ if (yaffsfs_CheckMemRegion(path, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(data, size, 1) < 0) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2027,7
+2039,7
@@
int yaffs_flistxattr(int fd, char *data, int size)
int retVal = -1;
int retVal = -1;
- if (
!data
) {
+ if (
yaffsfs_CheckMemRegion(data, size, 1) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2059,7
+2071,8
@@
static int yaffs_do_removexattr(const YCHAR *path, const char *name,
int loop = 0;
int retVal = -1;
int loop = 0;
int retVal = -1;
- if (!path || !name) {
+ if (yaffsfs_CheckMemRegion(path, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(name, 0, 0) < 0) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2112,7
+2125,7
@@
int yaffs_fremovexattr(int fd, const char *name)
int retVal = -1;
int retVal = -1;
- if (
!name
) {
+ if (
yaffsfs_CheckMemRegion(name, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2236,7
+2249,7
@@
int yaffs_access(const YCHAR *path, int amode)
int loop = 0;
int retval = -1;
int loop = 0;
int retval = -1;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2294,7
+2307,7
@@
int yaffs_chmod(const YCHAR *path, mode_t mode)
int notDir = 0;
int loop = 0;
int notDir = 0;
int loop = 0;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2366,7
+2379,7
@@
int yaffs_mkdir(const YCHAR *path, mode_t mode)
int notDir = 0;
int loop = 0;
int notDir = 0;
int loop = 0;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2420,7
+2433,7
@@
int yaffs_rmdir(const YCHAR *path)
int result;
YCHAR *alt_path;
int result;
YCHAR *alt_path;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2457,7
+2470,7
@@
int yaffs_mount_common(const YCHAR *path, int read_only, int skip_checkpt)
int result = YAFFS_FAIL;
struct yaffs_dev *dev = NULL;
int result = YAFFS_FAIL;
struct yaffs_dev *dev = NULL;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2516,7
+2529,7
@@
int yaffs_sync(const YCHAR *path)
struct yaffs_dev *dev = NULL;
YCHAR *dummy;
struct yaffs_dev *dev = NULL;
YCHAR *dummy;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2565,7
+2578,7
@@
int yaffs_remount(const YCHAR *path, int force, int read_only)
int retVal = -1;
struct yaffs_dev *dev = NULL;
int retVal = -1;
struct yaffs_dev *dev = NULL;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2605,7
+2618,7
@@
int yaffs_unmount2(const YCHAR *path, int force)
int retVal = -1;
struct yaffs_dev *dev = NULL;
int retVal = -1;
struct yaffs_dev *dev = NULL;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2715,7
+2728,7
@@
Y_LOFF_T yaffs_freespace(const YCHAR *path)
struct yaffs_dev *dev = NULL;
YCHAR *dummy;
struct yaffs_dev *dev = NULL;
YCHAR *dummy;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2744,7
+2757,7
@@
Y_LOFF_T yaffs_totalspace(const YCHAR *path)
struct yaffs_dev *dev = NULL;
YCHAR *dummy;
struct yaffs_dev *dev = NULL;
YCHAR *dummy;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2775,7
+2788,7
@@
int yaffs_inodecount(const YCHAR *path)
struct yaffs_dev *dev = NULL;
YCHAR *dummy;
struct yaffs_dev *dev = NULL;
YCHAR *dummy;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-2927,7
+2940,7
@@
yaffs_DIR *yaffs_opendir(const YCHAR *dirname)
int notDir = 0;
int loop = 0;
int notDir = 0;
int loop = 0;
- if (
!dirname
) {
+ if (
yaffsfs_CheckMemRegion(dirname, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return NULL;
}
yaffsfs_SetError(-EFAULT);
return NULL;
}
@@
-3021,6
+3034,9
@@
void yaffs_rewinddir(yaffs_DIR *dirp)
dsc = (struct yaffsfs_DirSearchContxt *) dirp;
dsc = (struct yaffsfs_DirSearchContxt *) dirp;
+ if (yaffsfs_CheckMemRegion(dirp, sizeof(*dsc), 0) < 0)
+ return;
+
yaffsfs_Lock();
yaffsfs_SetDirRewound(dsc);
yaffsfs_Lock();
yaffsfs_SetDirRewound(dsc);
@@
-3034,7
+3050,7
@@
int yaffs_closedir(yaffs_DIR *dirp)
dsc = (struct yaffsfs_DirSearchContxt *) dirp;
dsc = (struct yaffsfs_DirSearchContxt *) dirp;
- if (
!dsc
) {
+ if (
yaffsfs_CheckMemRegion(dirp, sizeof(*dsc), 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-3058,7
+3074,8
@@
int yaffs_symlink(const YCHAR *oldpath, const YCHAR *newpath)
int notDir = 0;
int loop = 0;
int notDir = 0;
int loop = 0;
- if (!oldpath || !newpath) {
+ if (yaffsfs_CheckMemRegion(oldpath, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(newpath, 0, 0) < 0) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-3105,7
+3122,8
@@
int yaffs_readlink(const YCHAR *path, YCHAR *buf, int bufsiz)
int notDir = 0;
int loop = 0;
int notDir = 0;
int loop = 0;
- if (!path || !buf) {
+ if (yaffsfs_CheckMemRegion(path, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(buf, bufsiz, 1) < 0) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-3146,7
+3164,8
@@
int yaffs_link(const YCHAR *oldpath, const YCHAR *linkpath)
int lnkLoop = 0;
YCHAR *newname;
int lnkLoop = 0;
YCHAR *newname;
- if (!oldpath || !linkpath) {
+ if (yaffsfs_CheckMemRegion(oldpath, 0, 0) < 0 ||
+ yaffsfs_CheckMemRegion(linkpath, 0, 0) < 0) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}
@@
-3218,7
+3237,7
@@
int yaffs_n_handles(const YCHAR *path)
{
struct yaffs_obj *obj;
{
struct yaffs_obj *obj;
- if (
!path
) {
+ if (
yaffsfs_CheckMemRegion(path, 0, 0) < 0
) {
yaffsfs_SetError(-EFAULT);
return -1;
}
yaffsfs_SetError(-EFAULT);
return -1;
}