perror("dorade_read_comment_block");
return NULL;
}
- fread(cb->code, sizeof(cb->code), 1, in);
- fread(&cb->len, sizeof(cb->len), 1, in);
+ if (fread(cb->code, sizeof(cb->code), 1, in) != 1) {
+ perror("dorade_read_comment_block: fread");
+ return NULL;
+ }
+ if (fread(&cb->len, sizeof(cb->len), 1, in) != 1) {
+ perror("dorade_read_comment_block: fread");
+ return NULL;
+ }
/* Check for big endian data on little endian platform. The smallest value
* cb->len could have is 8 (length of cb->code + cb->len), so we put that in
perror("dorade_read_comment_block: cb->comment");
return cb;
}
- fread(cb->comment, sizeof(char), cb->len-8, in);
+ if (fread(cb->comment, sizeof(char), cb->len-8, in) != cb->len){
+ perror("dorade_read_comment_block: fread");
+ return NULL;
+ }
return cb;
}
return NULL;
}
- fread(vd, sizeof(Volume_desc), 1, in);
+ if (fread(vd, sizeof(Volume_desc), 1, in) != 1) {
+ perror("dorade_read_volume_desc: fread");
+ return NULL;
+ }
+
/* Now, convert from Big Endian. */
if (do_swap) {
vd->len = ntohl(vd->len);
return NULL;
}
- fread(rd, sizeof(Radar_desc), 1, in);
+ if (fread(rd, sizeof(Radar_desc), 1, in) != 1) {
+ perror("dorade_read_radar_desc: fread");
+ return NULL;
+ }
/* Now, convert from Big Endian. */
if (do_swap) {
swap_4_bytes(&rd->len);
return NULL;
}
- fread(pd, sizeof(Parameter_desc), 1, in);
+ if (fread(pd, sizeof(Parameter_desc), 1, in) != 1) {
+ perror("dorade_read_parameter_desc: fread");
+ return NULL;
+ }
/* Now, convert from Big Endian. */
if (do_swap) {
swap_4_bytes(&pd->len);
return NULL;
}
- fread(&cv->code, sizeof(cv->code), 1, in);
- fread(&cv->len, sizeof(cv->len), 1, in);
- fread(&cv->ncells, sizeof(cv->ncells), 1, in);
+ if (fread(&cv->code, sizeof(cv->code), 1, in) != 1 ||
+ fread(&cv->len, sizeof(cv->len), 1, in) != 1 ||
+ fread(&cv->ncells, sizeof(cv->ncells), 1, in) != 1) {
+ perror("dorade_read_cell_range_vector: fread");
+ return NULL;
+ }
if (do_swap) {
swap_4_bytes(&cv->len);
swap_4_bytes(&cv->ncells);
perror("dorade_read_cell_range_vector: cv->range_cell");
return cv;
}
- fread(cv->range_cell, sizeof(float), cv->ncells, in);
+ if (fread(cv->range_cell, sizeof(float), cv->ncells, in) != cv->ncells) {
+ perror("dorade_read_cell_range_vector: fread");
+ return NULL;
+ }
if (do_swap) {
for (i=0; i<cv->ncells; i++)
- cv->ncells*4;
buff = (char *)malloc(i);
if (!buff) return cv;
- fread(buff, sizeof(char), i, in);
+ if (fread(buff, sizeof(char), i, in) != i) {
+ perror("dorade_read_cell_range_vector: fread");
+ return NULL;
+ }
free(buff);
return cv;
}
/* Make sure we have Correction Factor Descriptor. */
while (!is_cfac) {
- fread(cf->code, sizeof(cf->code), 1, in);
+ if (fread(cf->code, sizeof(cf->code), 1, in) != 1) {
+ perror("dorade_read_correction_factor_desc: fread");
+ return NULL;
+ }
if (strncmp(cf->code, "CFAC", 4) == 0)
is_cfac = 1;
else {
- fread(&cf->len, sizeof(cf->len), 1, in);
+ if (fread(&cf->len, sizeof(cf->len), 1, in) != 1) {
+ perror("dorade_read_correction_factor_desc: fread");
+ return NULL;
+ }
if (do_swap) swap_4_bytes(&cf->len);
remaining = (char *) malloc(cf->len-8);
if (!remaining) {
fprintf(stderr,"cf->len = %d\n\n", cf->len);
return NULL;
}
- fread(remaining, sizeof(char), cf->len-8, in);
+ if (fread(remaining, sizeof(char), cf->len-8, in) != 1) {
+ perror("dorade_read_correction_factor_desc: fread");
+ return NULL;
+ }
free(remaining);
}
}
- fread(&cf->len, sizeof(Correction_factor_desc)-4, 1, in);
+ if (fread(&cf->len, sizeof(Correction_factor_desc)-4, 1, in) != 1) {
+ perror("dorade_read_correction_factor_desc: fread");
+ return NULL;
+ }
/* Now, convert from Big Endian. */
if (do_swap) {
swap_4_bytes(&cf->len);
return NULL;
}
- fread(si, sizeof(Sweep_info), 1, in);
+ if (fread(si, sizeof(Sweep_info), 1, in) != 1) {
+ perror("dorade_read_sweep_info: fread");
+ return NULL;
+ }
/* FIXME: ?? For now, VOLD is what we expect when there
* are no more SWIB. This is a data driven EOF.
* Returning NULL should suffice.
return NULL;
}
- fread(ri, sizeof(Ray_info), 1, in);
+ if (fread(ri, sizeof(Ray_info), 1, in) != 1) {
+ perror("dorade_read_ray_info: fread");
+ return NULL;
+ }
/* Now, convert from Big Endian. */
if (do_swap) {
swap_4_bytes(&ri->len);
* the place of ASIB when radar is grounded.
*/
- fread(pi->code, sizeof(pi->code), 1, in);
- fread(&pi->len, sizeof(pi->len), 1, in);
+ if (fread(pi->code, sizeof(pi->code), 1, in) != 1 ||
+ fread(&pi->len, sizeof(pi->len), 1, in) != 1) {
+ perror("dorade_read_platform_info: fread");
+ return NULL;
+ }
if (do_swap) swap_4_bytes(&pi->len);
len_first_two = sizeof(pi->code) + sizeof(pi->len);
if (strncmp(pi->code, "ASIB", 4) == 0) {
- fread(&pi->longitude, sizeof(Platform_info)-len_first_two, 1, in);
+ if (fread(&pi->longitude, sizeof(Platform_info)-len_first_two, 1, in) != 1) {
+ perror("dorade_read_platform_info: fread");
+ return NULL;
+ }
/* Read past any extra bytes. */
if (pi->len > sizeof(Platform_info)) {
if (read_extra_bytes(pi->len - sizeof(Platform_info), in) <= 0)
return NULL;
}
- fread(&pd->code, sizeof(pd->code), 1, in);
- fread(&pd->len, sizeof(pd->len), 1, in);
- fread(&pd->name, sizeof(pd->name), 1, in);
+ if (fread(&pd->code, sizeof(pd->code), 1, in) != 1 ||
+ fread(&pd->len, sizeof(pd->len), 1, in) != 1 ||
+ fread(&pd->name, sizeof(pd->name), 1, in) != 1) {
+ perror("dorade_read_parameter_data: fread");
+ return NULL;
+ }
if (do_swap) swap_4_bytes(&pd->len);
/* Length is in parameter data block? or calculate if from pd->len. */
perror("dorade_read_parameter_data: pd->data");
return pd;
}
- fread(pd->data, sizeof(char), len, in);
+ if (fread(pd->data, sizeof(char), len, in) != len) {
+ perror("dorade_read_parameter_data: fread");
+ return NULL;
+ }
/* FIXME: Big endian conversion in caller? Is that the right place? */