summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@centraldogma>2011-10-06 00:40:28 +0200
committercinap_lenrek <cinap_lenrek@centraldogma>2011-10-06 00:40:28 +0200
commitd0405d6c245bee5de92ffe1973294a3577af92c8 (patch)
tree3785d38d1c990ed02e229c5201ca37eb5d670945
parentc0c9a9927f413e70f59158a10c460b1927985f44 (diff)
jpg: use Breadn() instead if Bread() to guard aganst short reads
-rw-r--r--sys/src/cmd/jpg/ico.c6
-rw-r--r--sys/src/cmd/jpg/readbmp.c8
-rw-r--r--sys/src/cmd/jpg/readgif.c15
-rw-r--r--sys/src/cmd/jpg/readjpg.c4
-rw-r--r--sys/src/cmd/jpg/readpng.c8
-rw-r--r--sys/src/cmd/jpg/readtga.c10
-rw-r--r--sys/src/cmd/jpg/readv210.c2
-rw-r--r--sys/src/cmd/jpg/readyuv.c4
8 files changed, 28 insertions, 29 deletions
diff --git a/sys/src/cmd/jpg/ico.c b/sys/src/cmd/jpg/ico.c
index 61db99da7..e9a22633f 100644
--- a/sys/src/cmd/jpg/ico.c
+++ b/sys/src/cmd/jpg/ico.c
@@ -58,7 +58,7 @@ Bgetheader(Biobuf *b, Header *h)
uchar buf[40];
memset(h, 0, sizeof(*h));
- if(Bread(b, buf, 6) != 6)
+ if(Breadn(b, buf, 6) != 6)
goto eof;
if(gets(&buf[0]) != 0)
goto header;
@@ -70,7 +70,7 @@ Bgetheader(Biobuf *b, Header *h)
icon = mallocz(sizeof(*icon), 1);
if(icon == nil)
sysfatal("malloc: %r");
- if(Bread(b, buf, 16) != 16)
+ if(Breadn(b, buf, 16) != 16)
goto eof;
icon->w = buf[0];
icon->h = buf[1];
@@ -195,7 +195,7 @@ Bgeticon(Biobuf *b, Icon *icon)
buf = malloc(icon->len);
if(buf == nil)
return -1;
- if(Bread(b, buf, icon->len) != icon->len){
+ if(Breadn(b, buf, icon->len) != icon->len){
werrstr("unexpected EOF");
return -1;
}
diff --git a/sys/src/cmd/jpg/readbmp.c b/sys/src/cmd/jpg/readbmp.c
index b760f2cb8..2d41828cf 100644
--- a/sys/src/cmd/jpg/readbmp.c
+++ b/sys/src/cmd/jpg/readbmp.c
@@ -320,7 +320,7 @@ load_16(Biobuf *b, long width, long height, Rgb* buf, Rgb* clut)
for(iy = height; iy; iy--, i += step_up)
for(ix = 0; ix < width; ix++, i++) {
unsigned val;
- Bread(b, c, sizeof(c));
+ Breadn(b, c, sizeof(c));
val = (unsigned)c[0] + ((unsigned)c[1] << 8);
buf[i].alpha = 0;
@@ -340,7 +340,7 @@ load_16(Biobuf *b, long width, long height, Rgb* buf, Rgb* clut)
} else
for(iy = height; iy; iy--, i += step_up)
for(ix = 0; ix < width; ix++, i++) {
- Bread(b, c, sizeof(c));
+ Breadn(b, c, sizeof(c));
buf[i].blue = (uchar)((c[0] << 3) & 0xf8);
buf[i].green = (uchar)(((((unsigned)c[1] << 6) +
(((unsigned)c[0]) >> 2))) & 0xf8);
@@ -406,7 +406,7 @@ load_32(Biobuf *b, long width, long height, Rgb* buf, Rgb* clut)
for(iy = height; iy; iy--, i += step_up)
for(ix = 0; ix < width; ix++, i++) {
ulong val;
- Bread(b, c, sizeof(c));
+ Breadn(b, c, sizeof(c));
val = (ulong)c[0] + ((ulong)c[1] << 8) +
((ulong)c[2] << 16) + ((ulong)c[1] << 24);
@@ -427,7 +427,7 @@ load_32(Biobuf *b, long width, long height, Rgb* buf, Rgb* clut)
} else
for(iy = height; iy; iy--, i += step_up)
for(ix = 0; ix < width; ix++, i++) {
- Bread(b, c, nelem(c));
+ Breadn(b, c, nelem(c));
buf[i].blue = c[0];
buf[i].green = c[1];
buf[i].red = c[2];
diff --git a/sys/src/cmd/jpg/readgif.c b/sys/src/cmd/jpg/readgif.c
index 4e3cf2030..df5f58de7 100644
--- a/sys/src/cmd/jpg/readgif.c
+++ b/sys/src/cmd/jpg/readgif.c
@@ -12,7 +12,6 @@ struct Entry{
int exten;
};
-
struct Header{
Biobuf *fd;
char err[256];
@@ -46,7 +45,7 @@ static void readheader(Header*);
static void skipextension(Header*);
static uchar* readcmap(Header*, int);
static uchar* decode(Header*, Rawimage*, Entry*);
-static void interlace(Header*, Rawimage*);
+static void interlace(Header*, Rawimage*);
static
void
@@ -222,7 +221,7 @@ static
void
readheader(Header *h)
{
- if(Bread(h->fd, h->buf, 13) != 13)
+ if(Breadn(h->fd, h->buf, 13) != 13)
giferror(h, "ReadGIF: can't read header: %r");
memmove(h->vers, h->buf, 6);
if(strcmp(h->vers, "GIF87a")!=0 && strcmp(h->vers, "GIF89a")!=0)
@@ -247,7 +246,7 @@ readcmap(Header *h, int size)
if(size > 8)
giferror(h, "ReadGIF: can't handles %d bits per pixel", size);
size = 3*(1<<size);
- if(Bread(h->fd, h->buf, size) != size)
+ if(Breadn(h->fd, h->buf, size) != size)
giferror(h, "ReadGIF: short read on color map");
map = malloc(size);
if(map == nil)
@@ -263,7 +262,7 @@ readone(Header *h)
Rawimage *i;
int left, top, width, height;
- if(Bread(h->fd, h->buf, 9) != 9)
+ if(Breadn(h->fd, h->buf, 9) != 9)
giferror(h, "ReadGIF: can't read image descriptor: %r");
i = malloc(sizeof(Rawimage));
if(i == nil)
@@ -295,7 +294,7 @@ readdata(Header *h, uchar *data)
giferror(h, "ReadGIF: can't read data: %r");
if(nbytes == 0)
return 0;
- n = Bread(h->fd, data, nbytes);
+ n = Breadn(h->fd, data, nbytes);
if(n < 0)
giferror(h, "ReadGIF: can't read data: %r");
if(n != nbytes)
@@ -307,7 +306,7 @@ static
void
graphiccontrol(Header *h)
{
- if(Bread(h->fd, h->buf, 5+1) != 5+1)
+ if(Breadn(h->fd, h->buf, 5+1) != 5+1)
giferror(h, readerr);
h->flags = h->buf[1];
h->delay = h->buf[2]+(h->buf[3]<<8);
@@ -348,7 +347,7 @@ skipextension(Header *h)
default:
giferror(h, "ReadGIF: unknown extension");
}
- if(hsize>0 && Bread(h->fd, h->buf, hsize) != hsize)
+ if(hsize>0 && Breadn(h->fd, h->buf, hsize) != hsize)
giferror(h, extreaderr);
if(!hasdata){
/*
diff --git a/sys/src/cmd/jpg/readjpg.c b/sys/src/cmd/jpg/readjpg.c
index 868c1e2b2..8653d72d2 100644
--- a/sys/src/cmd/jpg/readjpg.c
+++ b/sys/src/cmd/jpg/readjpg.c
@@ -448,7 +448,7 @@ readsegment(Header *h, int *markerp)
case 0:
jpgerror(h, "ReadJPG: expecting marker; saw %.2x at offset %lld", m, Boffset(h->fd));
}
- if(Bread(h->fd, tmp, 2) != 2)
+ if(Breadn(h->fd, tmp, 2) != 2)
Readerr:
jpgerror(h, readerr);
n = int2(tmp, 0);
@@ -462,7 +462,7 @@ readsegment(Header *h, int *markerp)
h->nbuf = n;
}
/* accept short reads to cope with some real-world jpegs */
- if(Bread(h->fd, h->buf, n) < 0)
+ if(Breadn(h->fd, h->buf, n) < 0)
goto Readerr;
*markerp = m;
return n;
diff --git a/sys/src/cmd/jpg/readpng.c b/sys/src/cmd/jpg/readpng.c
index 2d87ad3a2..a1ef1ff79 100644
--- a/sys/src/cmd/jpg/readpng.c
+++ b/sys/src/cmd/jpg/readpng.c
@@ -100,19 +100,19 @@ getchunk(Biobuf *b, char *type, uchar *d, int m)
ulong crc = 0, crc2;
int n, nr;
- if(Bread(b, buf, 8) != 8)
+ if(Breadn(b, buf, 8) != 8)
return -1;
n = get4(buf);
memmove(type, buf+4, 4);
type[4] = 0;
if(n > m)
sysfatal("getchunk needed %d, had %d", n, m);
- nr = Bread(b, d, n);
+ nr = Breadn(b, d, n);
if(nr != n)
sysfatal("getchunk read %d, expected %d", nr, n);
crc = blockcrc(crctab, crc, type, 4);
crc = blockcrc(crctab, crc, d, n);
- if(Bread(b, buf, 4) != 4)
+ if(Breadn(b, buf, 4) != 4)
sysfatal("getchunk tlr failed");
crc2 = get4(buf);
if(crc != crc2)
@@ -389,7 +389,7 @@ readslave(Biobuf *b)
ZlibW zw;
buf = pngmalloc(IDATSIZE, 0);
- Bread(b, buf, sizeof PNGmagic);
+ Breadn(b, buf, sizeof PNGmagic);
if(memcmp(PNGmagic, buf, sizeof PNGmagic) != 0)
sysfatal("bad PNGmagic");
diff --git a/sys/src/cmd/jpg/readtga.c b/sys/src/cmd/jpg/readtga.c
index 715a29b01..cd8c8653c 100644
--- a/sys/src/cmd/jpg/readtga.c
+++ b/sys/src/cmd/jpg/readtga.c
@@ -113,7 +113,7 @@ rdhdr(Biobuf *bp)
free(h);
return nil;
}
- if(Bread(bp, h->cmap, n) != n){
+ if(Breadn(bp, h->cmap, n) != n){
free(h);
free(h->cmap);
return nil;
@@ -124,7 +124,7 @@ rdhdr(Biobuf *bp)
static int
luma(Biobuf *bp, uchar *l, int num)
{
- return Bread(bp, l, num);
+ return Breadn(bp, l, num);
}
static int
@@ -164,7 +164,7 @@ rgba(Biobuf *bp, int bpp, uchar *r, uchar *g, uchar *b, int num)
switch(bpp){
case 16:
for(i = 0; i < num; i++){
- if(Bread(bp, buf, 2) != 2)
+ if(Breadn(bp, buf, 2) != 2)
break;
x = buf[0];
y = buf[1];
@@ -175,7 +175,7 @@ rgba(Biobuf *bp, int bpp, uchar *r, uchar *g, uchar *b, int num)
break;
case 24:
for(i = 0; i < num; i++){
- if(Bread(bp, buf, 3) != 3)
+ if(Breadn(bp, buf, 3) != 3)
break;
*b++ = buf[0];
*g++ = buf[1];
@@ -184,7 +184,7 @@ rgba(Biobuf *bp, int bpp, uchar *r, uchar *g, uchar *b, int num)
break;
case 32:
for(i = 0; i < num; i++){
- if(Bread(bp, buf, 4) != 4)
+ if(Breadn(bp, buf, 4) != 4)
break;
*b++ = buf[0];
*g++ = buf[1];
diff --git a/sys/src/cmd/jpg/readv210.c b/sys/src/cmd/jpg/readv210.c
index 44922d16a..d709dd447 100644
--- a/sys/src/cmd/jpg/readv210.c
+++ b/sys/src/cmd/jpg/readv210.c
@@ -120,7 +120,7 @@ BreadV210(Biobuf *bp, int colourspace)
goto Error;
for(l = 0; l < lines; l++){
- if(Bread(bp, buf, chunk) == -1)
+ if(Breadn(bp, buf, chunk) == -1)
goto Error;
rd = 0;
diff --git a/sys/src/cmd/jpg/readyuv.c b/sys/src/cmd/jpg/readyuv.c
index 802d89cb1..ac74b58c2 100644
--- a/sys/src/cmd/jpg/readyuv.c
+++ b/sys/src/cmd/jpg/readyuv.c
@@ -126,7 +126,7 @@ Breadyuv(Biobuf *bp, int colourspace)
goto Error;
for (l = 0; l < lines; l++) {
- if (Bread(bp, buf, pixels *2) == -1)
+ if (Breadn(bp, buf, pixels *2) == -1)
goto Error;
base = l*pixels*2;
@@ -137,7 +137,7 @@ Breadyuv(Biobuf *bp, int colourspace)
if (bits == 10)
for (l = 0; l < lines; l++) {
- if (Bread(bp, buf, pixels / 2) == -1)
+ if (Breadn(bp, buf, pixels / 2) == -1)
goto Error;