#include <execinfo.h>
#endif
-#ifdef LINUX_SENDFILE
-#include <sys/sendfile.h>
+#ifdef UNDEF_MEMCPY
+#undef memcpy
#endif
#ifdef HAVE_ZLIB
if (Force ||
(Buf->BufUsed + (Buf->BufUsed / 3) > Buf->BufSize))
{
- char *TmpBuf = (char*) malloc(Buf->BufUsed + 1);
+ char *TmpBuf;
+
+ TmpBuf = (char*) malloc(Buf->BufUsed + 1);
+ if (TmpBuf == NULL)
+ return -1;
+
memcpy (TmpBuf, Buf->buf, Buf->BufUsed + 1);
Buf->BufSize = Buf->BufUsed + 1;
free(Buf->buf);
StrBuf *NewBuf;
NewBuf = (StrBuf*) malloc(sizeof(StrBuf));
+ if (NewBuf == NULL)
+ return NULL;
+
NewBuf->buf = (char*) malloc(BaseStrBufSize);
+ if (NewBuf->buf == NULL)
+ {
+ free(NewBuf);
+ return NULL;
+ }
NewBuf->buf[0] = '\0';
NewBuf->BufSize = BaseStrBufSize;
NewBuf->BufUsed = 0;
return NewStrBuf();
NewBuf = (StrBuf*) malloc(sizeof(StrBuf));
+ if (NewBuf == NULL)
+ return NULL;
+
NewBuf->buf = (char*) malloc(CopyMe->BufSize);
+ if (NewBuf->buf == NULL)
+ {
+ free(NewBuf);
+ return NULL;
+ }
+
memcpy(NewBuf->buf, CopyMe->buf, CopyMe->BufUsed + 1);
NewBuf->BufUsed = CopyMe->BufUsed;
NewBuf->BufSize = CopyMe->BufSize;
size_t CopySize;
NewBuf = (StrBuf*) malloc(sizeof(StrBuf));
+ if (NewBuf == NULL)
+ return NULL;
+
if (nChars < 0)
CopySize = strlen((ptr != NULL)?ptr:"");
else
StrBuf *NewBuf;
NewBuf = (StrBuf*) malloc(sizeof(StrBuf));
+ if (NewBuf == NULL)
+ return NULL;
NewBuf->buf = (char*) StringConstant;
NewBuf->BufSize = SizeOfStrConstant;
NewBuf->BufUsed = SizeOfStrConstant;
}
if (Offset + nChars < Source->BufUsed)
{
- if (nChars >= dest->BufSize)
- IncreaseBuf(dest, 0, nChars + 1);
+ if ((nChars >= dest->BufSize) &&
+ (IncreaseBuf(dest, 0, nChars + 1) == -1))
+ return 0;
memcpy(dest->buf, Source->buf + Offset, nChars);
dest->BufUsed = nChars;
dest->buf[dest->BufUsed] = '\0';
return nChars;
}
NCharsRemain = Source->BufUsed - Offset;
- if (NCharsRemain >= dest->BufSize)
- IncreaseBuf(dest, 0, NCharsRemain + 1);
+ if ((NCharsRemain >= dest->BufSize) &&
+ (IncreaseBuf(dest, 0, NCharsRemain + 1) == -1))
+ return 0;
memcpy(dest->buf, Source->buf + Offset, NCharsRemain);
dest->BufUsed = NCharsRemain;
dest->buf[dest->BufUsed] = '\0';
return Target->BufUsed;
}
+
+/**
+ * @ingroup StrBuf_DeEnCoder
+ * @brief replace all non-Ascii characters by another
+ * @param Buf buffer to inspect
+ * @param repl charater to stamp over non ascii chars
+ */
+void StrBufAsciify(StrBuf *Buf, const char repl)
+{
+ long offset;
+
+ for (offset = 0; offset < Buf->BufUsed; offset ++)
+ if (!isascii(Buf->buf[offset]))
+ Buf->buf[offset] = repl;
+
+}
+
/**
* @ingroup StrBuf_DeEnCoder
* @brief unhide special chars hidden to the HTML escaper
{
char *xferbuf;
size_t siz;
- if (Buf == NULL) return -1;
+
+ if (Buf == NULL)
+ return -1;
xferbuf = (char*) malloc(Buf->BufSize);
+ if (xferbuf == NULL)
+ return -1;
+
*xferbuf = '\0';
siz = CtdlDecodeBase64(xferbuf,
Buf->buf,
nSuccessLess = 0;
buf->BufUsed += rlen;
buf->buf[buf->BufUsed] = '\0';
- if (buf->BufUsed + 10 > buf->BufSize) {
- IncreaseBuf(buf, 1, -1);
- }
pch = strchr(buf->buf, '\n');
+ if ((pch == NULL) &&
+ (buf->BufUsed + 10 > buf->BufSize) &&
+ (IncreaseBuf(buf, 1, -1) == -1))
+ return -1;
continue;
}
int nSuccessLess = 0;
int MaxTries;
- if ((Blob == NULL) || (*fd == -1) || (IOBuf == NULL) || (Pos == NULL))
+ if ((Blob == NULL) ||
+ (*fd == -1) ||
+ (IOBuf == NULL) ||
+ (Pos == NULL))
{
- if (*Pos != NULL)
+ if (Pos != NULL)
*Pos = NULL;
*Error = ErrRBB_BLOBFPreConditionFailed;
return -1;