Use calloc to request cleared memory instead. Kernel and libc conspire to make this more efficient. Also, replace one malloc() + strcpy() with strdup(). Signed-off-by: Alan Jenkins <alan-jenkins@xxxxxxxxxxxxxx> diff --git a/extras/collect/collect.c b/extras/collect/collect.c index 355b85b..3a7e826 100644 --- a/extras/collect/collect.c +++ b/extras/collect/collect.c @@ -171,8 +171,7 @@ static int checkout(int fd) if (debug) fprintf(stderr, "Found word %s\n", word); him = malloc(sizeof (struct _mate)); - him->name = malloc(strlen(word) + 1); - strcpy(him->name, word); + him->name = strdup(word); him->state = STATE_OLD; udev_list_node_append(&him->node, &bunch); word = NULL; diff --git a/extras/volume_id/lib/volume_id.c b/extras/volume_id/lib/volume_id.c index 791be43..8f22509 100644 --- a/extras/volume_id/lib/volume_id.c +++ b/extras/volume_id/lib/volume_id.c @@ -483,10 +483,9 @@ struct volume_id *volume_id_open_fd(int fd) { struct volume_id *id; - id = malloc(sizeof(struct volume_id)); + id = calloc(1, sizeof(struct volume_id)); if (id == NULL) return NULL; - memset(id, 0x00, sizeof(struct volume_id)); id->fd = fd; diff --git a/udev/lib/libudev-ctrl.c b/udev/lib/libudev-ctrl.c index 848f507..2e15db0 100644 --- a/udev/lib/libudev-ctrl.c +++ b/udev/lib/libudev-ctrl.c @@ -72,10 +72,9 @@ struct udev_ctrl *udev_ctrl_new_from_socket(struct udev *udev, const char *socke { struct udev_ctrl *uctrl; - uctrl = malloc(sizeof(struct udev_ctrl)); + uctrl = calloc(1, sizeof(struct udev_ctrl)); if (uctrl == NULL) return NULL; - memset(uctrl, 0x00, sizeof(struct udev_ctrl)); uctrl->refcount = 1; uctrl->udev = udev; @@ -213,10 +212,9 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl *uctrl) struct ucred *cred; char cred_msg[CMSG_SPACE(sizeof(struct ucred))]; - uctrl_msg = malloc(sizeof(struct udev_ctrl_msg)); + uctrl_msg = calloc(1, sizeof(struct udev_ctrl_msg)); if (uctrl_msg == NULL) return NULL; - memset(uctrl_msg, 0x00, sizeof(struct udev_ctrl_msg)); uctrl_msg->refcount = 1; uctrl_msg->uctrl = uctrl; diff --git a/udev/lib/libudev-device.c b/udev/lib/libudev-device.c index 0f793aa..0ae39d6 100644 --- a/udev/lib/libudev-device.c +++ b/udev/lib/libudev-device.c @@ -238,10 +238,9 @@ struct udev_device *device_new(struct udev *udev) if (udev == NULL) return NULL; - udev_device = malloc(sizeof(struct udev_device)); + udev_device = calloc(1, sizeof(struct udev_device)); if (udev_device == NULL) return NULL; - memset(udev_device, 0x00, sizeof(struct udev_device)); udev_device->refcount = 1; udev_device->udev = udev; udev_list_init(&udev_device->devlinks_list); diff --git a/udev/lib/libudev-enumerate.c b/udev/lib/libudev-enumerate.c index fab9c4d..6942003 100644 --- a/udev/lib/libudev-enumerate.c +++ b/udev/lib/libudev-enumerate.c @@ -53,10 +53,9 @@ struct udev_enumerate *udev_enumerate_new(struct udev *udev) { struct udev_enumerate *udev_enumerate; - udev_enumerate = malloc(sizeof(struct udev_enumerate)); + udev_enumerate = calloc(1, sizeof(struct udev_enumerate)); if (udev_enumerate == NULL) return NULL; - memset(udev_enumerate, 0x00, (sizeof(struct udev_enumerate))); udev_enumerate->refcount = 1; udev_enumerate->udev = udev; udev_list_init(&udev_enumerate->devices_list); diff --git a/udev/lib/libudev-monitor.c b/udev/lib/libudev-monitor.c index b9c2f8d..8d78d31 100644 --- a/udev/lib/libudev-monitor.c +++ b/udev/lib/libudev-monitor.c @@ -67,10 +67,9 @@ struct udev_monitor *udev_monitor_new_from_socket(struct udev *udev, const char return NULL; if (socket_path == NULL) return NULL; - udev_monitor = malloc(sizeof(struct udev_monitor)); + udev_monitor = calloc(1, sizeof(struct udev_monitor)); if (udev_monitor == NULL) return NULL; - memset(udev_monitor, 0x00, sizeof(struct udev_monitor)); udev_monitor->refcount = 1; udev_monitor->udev = udev; @@ -105,10 +104,9 @@ struct udev_monitor *udev_monitor_new_from_netlink(struct udev *udev) if (udev == NULL) return NULL; - udev_monitor = malloc(sizeof(struct udev_monitor)); + udev_monitor = calloc(1, sizeof(struct udev_monitor)); if (udev_monitor == NULL) return NULL; - memset(udev_monitor, 0x00, sizeof(struct udev_monitor)); udev_monitor->refcount = 1; udev_monitor->udev = udev; diff --git a/udev/lib/libudev-queue.c b/udev/lib/libudev-queue.c index 60f7209..bbd0641 100644 --- a/udev/lib/libudev-queue.c +++ b/udev/lib/libudev-queue.c @@ -45,10 +45,9 @@ struct udev_queue *udev_queue_new(struct udev *udev) if (udev == NULL) return NULL; - udev_queue = malloc(sizeof(struct udev_queue)); + udev_queue = calloc(1, sizeof(struct udev_queue)); if (udev_queue == NULL) return NULL; - memset(udev_queue, 0x00, sizeof(struct udev_queue)); udev_queue->refcount = 1; udev_queue->udev = udev; udev_list_init(&udev_queue->queue_list); diff --git a/udev/lib/libudev.c b/udev/lib/libudev.c index 511054a..9cf23c5 100644 --- a/udev/lib/libudev.c +++ b/udev/lib/libudev.c @@ -96,10 +96,9 @@ struct udev *udev_new(void) char *config_file; FILE *f; - udev = malloc(sizeof(struct udev)); + udev = calloc(1, sizeof(struct udev)); if (udev == NULL) return NULL; - memset(udev, 0x00, (sizeof(struct udev))); udev->refcount = 1; udev->log_fn = log_stderr; udev->log_priority = LOG_ERR; diff --git a/udev/udev-event.c b/udev/udev-event.c index 2559ff7..c8342f5 100644 --- a/udev/udev-event.c +++ b/udev/udev-event.c @@ -34,10 +34,9 @@ struct udev_event *udev_event_new(struct udev_device *dev) { struct udev_event *event; - event = malloc(sizeof(struct udev_event)); + event = calloc(1, sizeof(struct udev_event)); if (event == NULL) return NULL; - memset(event, 0x00, sizeof(struct udev_event)); event->dev = dev; event->udev = udev_device_get_udev(dev); diff --git a/udev/udev-rules.c b/udev/udev-rules.c index b8aa8ad..07c410d 100644 --- a/udev/udev-rules.c +++ b/udev/udev-rules.c @@ -2221,10 +2221,9 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names) struct udev_list_node file_list; struct udev_list_entry *file_loop, *file_tmp; - rules = malloc(sizeof(struct udev_rules)); + rules = calloc(1, sizeof(struct udev_rules)); if (rules == NULL) return rules; - memset(rules, 0x00, sizeof(struct udev_rules)); rules->udev = udev; rules->resolve_names = resolve_names; udev_list_init(&file_list); -- To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html