Browse Source

Coverity fixes: src/node_file

v0.7.4-release
Peter Griess 15 years ago
committed by Ryan Dahl
parent
commit
760fb17bbf
  1. 27
      src/node_file.cc

27
src/node_file.cc

@ -19,6 +19,8 @@
#define PATH_MAX 4096
#endif
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a)))
namespace node {
using namespace v8;
@ -29,6 +31,10 @@ using namespace v8;
static Persistent<String> encoding_symbol;
static Persistent<String> errno_symbol;
// Buffer for readlink() and other misc callers; keep this scoped at
// file-level rather than method-level to avoid excess stack usage.
static char getbuf[PATH_MAX + 1];
static int After(eio_req *req) {
HandleScope scope;
@ -289,10 +295,10 @@ static Handle<Value> ReadLink(const Arguments& args) {
if (args[1]->IsFunction()) {
ASYNC_CALL(readlink, args[1], *path)
} else {
char buf[PATH_MAX];
ssize_t bz = readlink(*path, buf, PATH_MAX);
ssize_t bz = readlink(*path, getbuf, ARRAY_SIZE(getbuf) - 1);
if (bz == -1) return ThrowException(ErrnoException(errno, NULL, "", *path));
return scope.Close(String::New(buf, bz));
getbuf[ARRAY_SIZE(getbuf) - 1] = '\0';
return scope.Close(String::New(getbuf, bz));
}
}
@ -433,16 +439,17 @@ static Handle<Value> SendFile(const Arguments& args) {
HandleScope scope;
if (args.Length() < 4 ||
!args[0]->IsInt32() ||
!args[1]->IsInt32() ||
!args[3]->IsNumber()) {
!args[0]->IsUint32() ||
!args[1]->IsUint32() ||
!args[2]->IsUint32() ||
!args[3]->IsUint32()) {
return THROW_BAD_ARGS;
}
int out_fd = args[0]->Int32Value();
int in_fd = args[1]->Int32Value();
off_t in_offset = args[2]->IsNumber() ? args[2]->IntegerValue() : -1;
size_t length = args[3]->IntegerValue();
int out_fd = args[0]->Uint32Value();
int in_fd = args[1]->Uint32Value();
off_t in_offset = args[2]->Uint32Value();
size_t length = args[3]->Uint32Value();
if (args[4]->IsFunction()) {
ASYNC_CALL(sendfile, args[4], out_fd, in_fd, in_offset, length)

Loading…
Cancel
Save