X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/5a67fdb396639987febb90770180252ce1e9ba6e..9be3cef1df309cc384c37af980d379d465ab25e9:/emufs/tipo1.c diff --git a/emufs/tipo1.c b/emufs/tipo1.c index a4f9de7..e703326 100644 --- a/emufs/tipo1.c +++ b/emufs/tipo1.c @@ -240,10 +240,12 @@ void* emufs_tipo1_leer_bloque(EMUFS* efs, EMUFS_BLOCK_ID block_id, int* err) if (block == NULL) { PERR("No hay memoria"); *err = EMUFS_ERROR_OUT_OF_MEMORY; + fclose(file); return NULL; } if (fread(block, efs->tam_bloque, 1, file) != 1) { free(block); + fclose(file); PERR("Error al leer bloque"); *err = EMUFS_ERROR_FILE_READ; return NULL; @@ -428,6 +430,9 @@ int emufs_tipo1_borrar_registro(EMUFS* efs, EMUFS_REG_ID reg_id) /* si es necesario desplazar */ if (offset < offset_reg_end) { /* muevo la porción de bloque a izquierda */ + /* XXX Este memcpy() puede copiar regiones de memoria que + * se superponen, si copia de principio a fin y byte a byte + * no debería haber problema */ memcpy(block + offset, block + offset_reg_end, efs->tam_bloque - offset_reg_end); /* rellena el espacio libre con ceros para la GUI */