Changeset fd8e8e1 in mainline for uspace/srv/net/il/ip/ip.c


Ignore:
Timestamp:
2010-10-30T19:39:29Z (13 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
069015f2, 417b12c
Parents:
768ea9e
Message:

Do not leak last_header on failure.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/il/ip/ip.c

    r768ea9e rfd8e8e1  
    652652                        middle_header = (ip_header_ref) packet_prefix(next,
    653653                            IP_HEADER_LENGTH(last_header));
    654                         if (!middle_header)
     654                        if (!middle_header) {
     655                                free(last_header);
    655656                                return ENOMEM;
     657                        }
    656658
    657659                        memcpy(middle_header, last_header,
     
    667669                            IP_HEADER_CHECKSUM(middle_header);
    668670                        if (destination) {
    669                                 ERROR_PROPAGATE(packet_set_addr(next, NULL,
     671                                if (ERROR_OCCURRED(packet_set_addr(next, NULL,
    670672                                    (uint8_t *) destination->value,
    671673                                    CONVERT_SIZE(char, uint8_t,
    672                                     destination->length)));
     674                                    destination->length)))) {
     675                                        free(last_header);
     676                                        return ERROR_CODE;
     677                                }
    673678                        }
    674679                        length += packet_get_data_length(next);
     
    678683                middle_header = (ip_header_ref) packet_prefix(next,
    679684                    IP_HEADER_LENGTH(last_header));
    680                 if (!middle_header)
     685                if (!middle_header) {
     686                        free(last_header);
    681687                        return ENOMEM;
     688                }
    682689
    683690                memcpy(middle_header, last_header,
     
    692699                    IP_HEADER_CHECKSUM(middle_header);
    693700                if (destination) {
    694                         ERROR_PROPAGATE(packet_set_addr(next, NULL,
     701                        if (ERROR_OCCURRED(packet_set_addr(next, NULL,
    695702                            (uint8_t *) destination->value,
    696                             CONVERT_SIZE(char, uint8_t, destination->length)));
     703                            CONVERT_SIZE(char, uint8_t,
     704                            destination->length)))) {
     705                                free(last_header);
     706                                return ERROR_CODE;
     707                            }
    697708                }
    698709                length += packet_get_data_length(next);
Note: See TracChangeset for help on using the changeset viewer.